- GlBegin
- Содержание
- Синтаксис [ править ]
- Параметры [ править ]
- Пояснения [ править ]
- Коды ошибок [ править ]
- QT the glBegin not declared?
- 1 Answer 1
- Not the answer you’re looking for? Browse other questions tagged qt opengl or ask your own question.
- Related
- Hot Network Questions
- Subscribe to RSS
- Не работает OpenGL
- glBegin/glEnd
- opengl glBegin (GL_LINES) и glBegin (GL_POINT) в 2D не визуализирующем точечный вектор
- Решение
GlBegin
glBegin — (Функция библиотеки OpenGL) определяет границы, внутри которых заданы вершины примитива или группы примитивов.работает с буфером накопления.
Содержание
Синтаксис [ править ]
Параметры [ править ]
Режим, задающий тип примитива или примитивов, которые будут созданы из вершин, заключённых между вызовом glBegin и последующим вызовом glEnd. Ниже представлены допустимые символьные константы, возможные в качестве данного параметра:
Рассматривает последующие вершины, как точки. n-я вершина определяет n-ю точку. Нарисуется N точек.
Каждая пара вершин является отрезком. Вершины 2n−1 и 2n определяют n-ю вершину. Нарисуется N/2 линий.
Нарисуется группа отрезков соединяющая все вершины от первой до последней. n-я и (n+1)-я вершины определяют n-ю линию. Нарисуется N−1 линия.
Нарисуется группа отрезков, соединяющая все вершины от первой до последней, и отрезок, соединяющий последнюю вершину с первой. n-я и (n+1)-я вершины определяют n-ю линию. Однако последняя линия будет определена N-ой вершиной и первой вершиной. Нарисуется N линий.
Каждая тройка вершин трактуется, как отдельный треугольник. n-й треугольник определяют вершины с порядковыми номерами (3n−2), (3n−1) и 3n. Всего нарисуется N/3 треугольников.
Нарисуется группа соединённых треугольников. После первых двух вершин, каждая последующая вершина будет добавлять один треугольник. Для нечётных n — n-й треугольник определяют вершины n, n+1 и n+2, для чётных — n+1, n и n+2. Нарисуется N−2 треугольников.
Нарисуется группа соединённых треугольников. После первых двух вершин, каждая последующая вершина будет добавлять один треугольник. n-й треугольник будут задавать вершины с порядковыми номерами 1, n+1 и n+2. Нарисуется N−2 треугольников.
Каждые четыре вершины определяют четырёхугольник. Вершины 4n−3, 4n−2, 4n−1 и 4n определяют n-й четырёхугольник. Всего нарисуется N/4 четырёхугольника.
Нарисуется группа соединённых четырёхугольников. После первых двух вершин, каждая последующая пара вершин будет добавлять один четырёхугольник. n-й четырехугольник будут задавать вершины с порядковыми номерами 2n−1, 2n, 2n+2 и 2n+1. Нарисуется N/2−1 четырёхугольника. Заметьте, что порядок вершин, который используется для вершин при GL_QUAD_STRIP отличается от порядка вершин в случае GL_QUADS.
Нарисуется один выпуклый полигон. Вершины с первой по N-ю определяют этот полигон.
Пояснения [ править ]
Функции glBegin и glEnd определяют границы, внутри которых заданы вершины примитива или группы примитивов. Функция glBegin имеет единственный аргумент, определяющий какой тип примитива будут составлять вершины. n принимается за порядковый номер вершины, начиная с первой, и N — за общее число указанных вершин, также трактуется следующее:
- Между функциями glBegin и glEnd вы можете использовать только определённый поднабор функций OpenGL:
- Независимо от выбранного значения для mode в glBegin, количество вершин, которые могут быть заданы между glBegin и glEnd, ничем не ограничено. Линии, треугольники, четырёхугольники и полигоны, которые не полностью определены, — не рисуются. Это случается, когда задано вершин меньше, чем требуется для вывода одного или нескольких примитивов. Не полностью определённые примитивы игнорируются, остальные рисуются.
- Для каждого примитива установлено минимальное количество вершин.
| Минимальное число вершин | Тип примитива |
|---|---|
| 1 | точка |
| 2 | линия |
| 3 | треугольник |
| 4 | четырёхугольник |
| 3 | полигон |
Режимы, требующие несколько вершин для каждого следующего примитива: GL_LINES (2), GL_TRIANGLES (3), GL_QUADS (4) и GL_QUAD_STRIP (2).
Коды ошибок [ править ]
Ниже представлены пояснения к кодам возможных ошибок.
| Код ошибки | Пояснение | |
|---|---|---|
| GL_INVALID_ENUM | mode установлен в недопустимое значение. | |
| GL_INVALID_OPERATION | Между glBegin и glEnd была вызвана недопустимая функция. Функция glEnd была вызвана перед соответствующей функцией glBegin, или glBegin была вызвана внутри glBegin/glEnd. Источник QT the glBegin not declared?i’m following a tutorial to write a small piece of code of opengl in qt.here’s the link http://www.youtube.com/watch?v=1nzHSkY4K18 but in the 6:13 when I bluid the code it show a couple of error that what I really don’t understand is when I only put the glClear(GL_COLOR_BUFFER_BIT) it builds alright,but occurs error even i just put the glColor3f().Does the GLWidget not support the glColor*() or glBegin() command? 1 Answer 1The functions you mention are simply not present in any modern version of GL, so the tutorial you are following sounds like it is quite out of date. So probably the version of GL exposed through your build of QT does not have these functions. It may be possible to reconfigure/rebuild QT to use an older version of GL, but I would instead recommend getting to know and use the modern programmable interface. Not the answer you’re looking for? Browse other questions tagged qt opengl or ask your own question.RelatedHot Network QuestionsSubscribe to RSSTo subscribe to this RSS feed, copy and paste this URL into your RSS reader. site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.15.40479 By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. Источник Не работает OpenGLПомощь в написании контрольных, курсовых и дипломных работ здесь. Не работает OpenGL Не работает openGL Не работает OpenGL Не работает OpenGL и это не помогает. может это связано с тем что OpenGL-окно не главное(оно дочернее) Добавлено через 4 минуты извините,можно поподробнее. я не понял что это Добавлено через 3 минуты в смысле сложности? Добавлено через 6 минут это Z — вверх что-ли? зачем такие %:7?№;%.? можешь попробовать перед прорисовкой геометрии делать так angstrom, если бы контекст неправильно создавался для дочернего окна, то и цвет фона бы не менялся ф-ией glClearColor. Михаил Свинцов, может фигуры просто не попадают в область видимости камеры? Герц, а что это такое и как ими пользоваться? если сам не объяснишь кинь где можно почитать про них Добавлено через 39 секунд Не работает OpenGL Не работает OpenGL в Qt Creator OpenGL странно работает не работает функция из OpenGL Источник glBegin/glEndПомощь в написании контрольных, курсовых и дипломных работ здесь. C glBegin на glDrawArrays + текстуры GlBegin не работает с GL_TRIANGLES Или воспользуйтесь поиском по форуму:
По любому поводу у людей бывают свои личные мнения и взгляды на разные ситуации, как говориться «на чужой роток не накинешь платок». На меня даже не повлияет, когда Khronos Group объявит официально OpenGL устаревшим. Если допустим, в следующем году Khronos Group объявит OpenGL deprecated/legacy (в чём я пока сильно сомневаюсь, что это будет в ближайшие годы), я всё равно не смогу перейти на Vulkan, так как мой ноутбук физически не поддерживает Vulkan, а пока я менять ноутбук не собираюсь (если он не сломается, конечно, или я не захочу). Ну и что, если они объявят, всё равно, OpenGL останется навечно для совместимости старых программ. Первый и значительный удар по OpenGL нанесли разработчики Mac, которые прекратили его поддерживать на версии OpenGL 4.1, а потом они нанесли удар и по Vulkan, отказавшись его поддерживать в пользу своего API — Metal. Ну и что. Зато можно использовать OpenGL 4.1 и мои приложения будут работать и на Mac, из которого 100% уже никогда не будет удалён OpenGL 4.1, так как многие программы перестанут запускаться и эта версия останется в Mac навечно (по крайней мере, до конца моей жизни) OpenGL имеет два профиля: Core и Compatibility. Если активировать Compatibility Profile, то устаревшие функции будут физически доступны из любой версии OpenGL на персональных компьютерах и ноутбуках. Если активировать Core Profile, то, например, в версии OpenGL 3.1 будут недоступны функции glBegin/glEnd и другие устаревшие функции. Если вы будете заниматься кроссплатформенной разработкой, то на OpenGL ES 2.0 и 3.0 на мобильных будут физически недоступны устаревшие функции OpenGL. Они недоступны и на WebGL. Изучайте этот абзац в документации, чтобы понимать, чем отличаются профили OpenGL (Core и Compatibility). Как можно чаще читайте документацию на Wiki от Khronos Group. Там много всего интересного и полезного. Context types OpenGL version 3.0 introduced the idea of deprecating functionality. Many OpenGL functions were declared deprecated, which means that users should avoid using them because they may be removed from later API versions. OpenGL 3.1 removed almost all of the functionality deprecated in OpenGL 3.0. This includes the Fixed Function Pipeline. However, since many implementations support the deprecated and removed features anyway, some implementations want to be able to provide a way for users of higher GL versions to gain access to the old APIs. Several techniques were tried, and it has settled down into a division between Core and Compatibility contexts. There are other context variations as well. Источник opengl glBegin (GL_LINES) и glBegin (GL_POINT) в 2D не визуализирующем точечный векторЯ делаю простую 2D игру в пинг — понг. Теперь мне нужно визуализировать как игроков (две линии, одна вверху экрана и одна внизу), так и мяч. Однако я не знаю, почему мяч просто не визуализируется … Вот часть кода. PS: ball->moveBall(); просто меняет мяч x а также y , Поскольку отладка бизнес-логики кажется хорошей, а координаты x, y меняются так, как они должны. Однако проблема заключается в визуализации мяча. PS PS: я знаю, что glBegin устарела, но я должен использовать устаревший код. РешениеЭто просто генерирует GL_INVALID_ENUM ошибка (вы действительно должны добавить некоторую проверку ошибок в ваш код, по крайней мере, для отладочных сборок). Правильное значение перечисления GL_POINTS , Тем не менее, все это ужасно устарели. Begin/End в основном был заменен массивами вершин еще в 1997 году, буферными объектами где-то в 2003 году и целым конвейером фиксированных функций шейдерами еще в 2004 году. Если вы работаете с OpenGL в 2018 году, на самом деле нет причин придерживаться летние концепции, которые все удален из современных профилей ядра OpenGL. ОБНОВЛЕНИЕ при проверке ошибок GL Самый простой способ это позвонить glGetError() в «стратегических местах» в вашем коде. Обратите внимание, что это может привести к неявной синхронизации в вашей реализации GL, что может отрицательно повлиять на производительность. Хорошей стратегией является использование этого только в отладочных сборках (или других опциях времени компиляции). Гораздо лучший подход в настоящее время GL Отладочный вывод функция, где водитель может сказать вам, что именно не так. Например, в случае использования GL_POINT для примитивного типа драйвер nivida linux сообщает: Источник |