Qt OpenGL点大小

问题描述 投票:1回答:1

我正在使用QOpenGLFunctions和现代OpenGL。我想在我的窗口上绘制一些GL_POINTS,但点大小似乎非常小。通常,您可以使用更改点的大小

glPointSize(4);

但是,QOpenGLFunctions包装器中不存在此代码段,因此我不确定如何更改它们。

绘图GL_TRIANGLES对我来说非常好。

我想画点来显示真实世界物体的点云。

c++ qt opengl 3d glpointsize
1个回答
3
投票

如果你使用QOpenGLFunctions,真的没有glPointSize()可用。为什么?

QOpenGLFunctions类提供对OpenGL ES 2.0 API的跨平台访问。

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提供了额外的提示,如果由glEnable(GL_PROGRAM_POINT_SIZE)启用,也可以与OpenGL(非ES)一起使用。

GL_PROGRAM_POINT_SIZE

如果启用并且顶点或几何着色器处于活动状态,则派生的点大小取自gl_PointSize中内置的(可能已剪切的)着色器,并将其限制为依赖于实现的点大小范围。

选项2:使用替代的QOpenGLFunctions_???

您可以明确使用非便携式替代方案(假设您不需要支持手机,嵌入式或类似的东西),而不是QOpenGLFunctions

Qt doc中的最佳概述。我能找到:QAbstractOpenGLFunctions

© www.soinside.com 2019 - 2024. All rights reserved.