Qt OpenGL点大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt OpenGL点大小相关的知识,希望对你有一定的参考价值。
我正在使用QOpenGLFunctions和现代OpenGL。我想在我的窗口上绘制一些GL_POINTS,但点大小似乎非常小。通常,您可以使用更改点的大小
glPointSize(4);
但是,QOpenGLFunctions包装器中不存在此代码段,因此我不确定如何更改它们。
绘图GL_TRIANGLES对我来说非常好。
我想画点来显示真实世界物体的点云。
如果你使用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
。
以上是关于Qt OpenGL点大小的主要内容,如果未能解决你的问题,请参考以下文章