Thi*_*ran 3 c++ opengl 3d qt glpointsize
我在现代 OpenGL 中使用 QOpenGLFunctions。我想在我的窗口上画一些 GL_POINTS 但点的大小似乎真的很小。通常,您可以更改点的大小
glPointSize(4);
Run Code Online (Sandbox Code Playgroud)
但是,此代码片段在 QOpenGLFunctions 包装器中不存在,因此我不确定如何更改它们。
绘制 GL_TRIANGLES 对我来说非常好。
我想绘制点以显示真实世界对象的点云。
如果你使用QOpenGLFunctions
,真的没有glPointSize()
可用的。为什么?
QOpenGLFunctions 类提供对 OpenGL ES 2.0 API 的跨平台访问。
在khronos.org上进行交叉检查:
Run Code Online (Sandbox Code Playgroud)+--------------+-----------------------------------------------------------------------+ | 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提供了额外的提示,如果通过glEnable(GL_PROGRAM_POINT_SIZE)
.
GL_PROGRAM_POINT_SIZE
如果启用并且顶点或几何着色器处于活动状态,则派生点大小将从(可能被剪裁的)着色器内置
gl_PointSize
并钳制到与实现相关的点大小范围。
选项 2:使用替代QOpenGLFunctions_???
类
而不是QOpenGLFunctions
,您可以明确使用非便携式替代品(假设您不需要支持电话、嵌入式或类似的东西)。
Qt 文档中最好的概述。我可以找到:QAbstractOpenGLFunctions
。