Размер точки Qt OpenGL

Я использую QOpenGLFunctions с современным OpenGL. Я хочу нарисовать GL_POINTS в моем окне, но размер точки кажется очень маленьким. Обычно вы можете изменить размер очков с помощью

glPointSize(4);

Однако этот фрагмент кода не существует в оболочке QOpenGLFunctions, поэтому я не уверен, как их изменить.

Рисование GL_TRIANGLES прекрасно работает для меня.

Я хочу нарисовать точки, чтобы отобразить облако точек объектов реального мира.

1

Решение

Если вы используете 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.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]