使用 OpenGL 的 GL_POINT_SIZE_RANGE 解决方法?

Posted

技术标签:

【中文标题】使用 OpenGL 的 GL_POINT_SIZE_RANGE 解决方法?【英文标题】:GL_POINT_SIZE_RANGE workaround using OpenGL? 【发布时间】:2012-02-18 18:13:10 【问题描述】:

我使用glPointSize 将我在游戏中发射的光子的大小设置为大约 3 像素。这很方便,因为我可以放大和缩小,以世界坐标绘制其他所有内容,并且光子仍然很容易看到。

但是在某些平台上(我真正的旧 linux 笔记本电脑)GL_POINT_SIZE_RANGE 仅限于一个像素。我需要另一种绘制光子的方法,否则我可能必须在世界坐标中将它绘制为一个实心圆,它的大小会根据缩放级别而变化,并且在缩小时可能会变得难以看到。

有解决办法吗?

【问题讨论】:

我能想到的唯一解决方法是你提到的那个。除了“实心圆”,您还可以将其绘制为带纹理的四边形或三角形,以节省一些顶点。 谢谢Thomas,我全力保存几个顶点! 【参考方案1】:

您可以使用保存然后恢复用于转换的矩阵。

glPushMatrix();
//apply viewing transformations (e.g. in photon's coordinate system)
//and draw your photon here
glPopMatrix();  //restores back where you were working.

【讨论】:

以上是关于使用 OpenGL 的 GL_POINT_SIZE_RANGE 解决方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenGL(和 OpenGL ES)渲染 SVG

Qt 使用自带的OpenGL模块开发程序

使用 OpenGL 还是 Qt? [关闭]

Qt5怎样使用OpenGL

OpenGL浮点精度

(转)使用openGL显示图像建立OpenGL ES的环境