GL_POINT和GL_LINES - 实际使用?

时间:2011-07-18 21:54:54

标签: opengl graphics

我一直在使用OpenGL制作3D应用程序,但我从未真正理解在生产阶段使用GL_POINT和GL_LINES原始绘图类型进行3D游戏。

  • (Where)是现代游戏中仍然使用的OpenGL中的点和线基元吗?

8 个答案:

答案 0 :(得分:10)

你知道,OpenGL不仅适用于游戏,还有其他类型的程序,而不仅仅是游戏。想想CAD程序或地图编辑器,线框仍然非常有用。

答案 1 :(得分:7)

GL_POINTS用于游戏中的点精灵(通过pointsprite功能或通过从几何着色器中的点生成四边形)用于“闪光”效果和体积云。
它们也被用在一些特殊的算法中,好吧...... 当需要点时。例如,在几何着色器中构建直方图,如后面的GPU Gems书籍中的章节。或者,通过转换反馈进行GPU实例剔除。

GL_LINES在游戏中几乎没用(主要用于CAD或建模应用)。除了经常不需要之外,如果需要它们,通常需要厚度大于1的线,在所有实现中都不能得到很好的支持(读作:快速)。
在这种情况下,通常会绘制带有三角形条带的粗线。

答案 2 :(得分:3)

谁曾说现代游戏中使用过这些原语?

GL_LINES对于3D建模工具中的线框视图至关重要。

答案 3 :(得分:3)

  

(Where)是现代游戏中仍然使用的OpenGL中的点和线基元吗?

您希望在何处使用它们?

在标准方法下,可以使用点来构建点精灵,这些精灵是始终面向摄像机且具有特定大小的2D平板卡。它们在窗口空间中总是方形的。遗憾的是,OpenGL规范使用它们有点可疑,因为点精灵是基于点的 center 剪切的,而不是用于渲染它的两个三角形的大小。

线条绘制非常合理。曾几何时,消费类硬件中没有线路,但它们已存在很多年了。当然,抗锯齿线渲染(GL_LINE_SMOOTH)是另一回事。

更重要的是这些事物与几何着色器的相互作用。您可以将点转换为四边形。或三角形。或者无论你想要什么,真的。每个“点”只是几何着色器的执行。您可以拥有包含球体位置和半径的点,并且几何着色器可以输出窗口对齐的四边形,这是片段着色器在其上执行某些光线跟踪逻辑的适当大小。

GL_POINTS仅表示“每个几何着色器一个顶点”。 GL_LINES表示“每个几何着色器两个顶点”。你如何使用它取决于你。

答案 4 :(得分:2)

我会说出于调试目的,但这只是我自己的观点。

某些基元可用于您认为不可应用的区域,例如粒子系统。

答案 5 :(得分:1)

我同意Pompe de velo关于线路对调试有用的看法。在调试AI和碰撞检测算法时,它们非常有用,这样您就可以可视化AI或碰撞检测所使用的数据。 AI的一些示例用途,线可用于显示AI路径或路径网格。线可用于显示AI正在使用的转向数据。线可用于显示AI的目标。显示的数据可以以文本形式显示,但有时更容易以可视形式显示。

答案 6 :(得分:0)

在大多数情况下,粒子基于GL_POINT,考虑到屏幕上可能存在大量粒子,每个粒子使用4个顶点会非常昂贵,因此GL_POINT解决了这个问题

GL_LINES有利于调试目的,可以在各种情况下使用线框模式。如上所述 - 在CAD应用程序中,但如果您在游戏使用中有所了解 - 这对于场景编辑器来说很有用。

答案 7 :(得分:0)

在碰撞检测方面,当您想要在线框模式下可视化边界体积(方框,球体,k-dops)和接触歧管时,它们会派上用场。根据碰撞状态设置这些基元的颜色非常有用。