Я использую QOpenGLFunctions с современным OpenGL. Я хочу нарисовать GL_POINTS в моем окне, но размер точки кажется очень маленьким. Обычно вы можете изменить размер очков с помощью
glPointSize(4);
Однако этот фрагмент кода не существует в оболочке QOpenGLFunctions, поэтому я не уверен, как их изменить.
Рисование GL_TRIANGLES прекрасно работает для меня.
Я хочу нарисовать точки, чтобы отобразить облако точек объектов реального мира.
Если вы используете QOpenGLFunctions
, там действительно нет glPointSize()
имеется в наличии. Зачем?
Класс QOpenGLFunctions обеспечивает межплатформенный доступ к API OpenGL ES 2.0.
Перекрестная проверка на khronos.org:
+--------------+-----------------------------------------------------------------------+ | Function / | OpenGL Version | | Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5 | +--------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ | glPointSize | v | v | v | v | v | v | v | v | v | v | v | v | +--------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
Таким образом, он поддерживается для OpenGL, но не для OpenGL ES.
Есть два возможных варианта:
Опция 1: gl_PointSize
В OpenGL ES вы можете использовать шейдерную переменную GLSL gl_PointSize
вместо.
(Я нашел это «случайно» при поиске подходящих ссылок на документы — раньше не знал и никогда не использовал).
derhass предоставил дополнительную подсказку, что это может быть использовано с OpenGL (не-ES), а также если включено glEnable(GL_PROGRAM_POINT_SIZE)
.
GL_PROGRAM_POINT_SIZE
Если этот параметр включен, а вершинный или геометрический шейдер активен, то размер полученной точки берется из встроенного шейдера (потенциально обрезанного).
gl_PointSize
и зажимается в зависимости от реализации диапазона размеров точек.
Вариант 2: использовать альтернативу QOpenGLFunctions_???
учебный класс
Вместо QOpenGLFunctions
Вы можете явно использовать непереносимую альтернативу (при условии, что вам не нужно поддерживать телефоны, встроенные устройства или что-то в этом роде).
Лучший обзор в Qt doc. Я мог бы найти: QAbstractOpenGLFunctions
.
Других решений пока нет …