OpenGL:使用GL_QUADS或GL_TRIANGLES更有效吗?

时间:2013-01-28 04:31:17

标签: opengl geometry gpu quad

我知道OpenGL已弃用并在新版本中删除了GL_QUADS。我听说这是因为现代GPU只用三角形渲染,所以调用四边形只会让GPU更难将它分成两个三角形(我听说无论如何,我不是任何一个专家这个主题)。

我想知道它是否更好(假设一般人的CPU比他们的GPU更快,相对而言)只是手动将四边形渲染成两个三角形,或者让GPU自己完成。再说一遍,我刚刚开始时,我对OpenGL没有真正的经验。我宁愿知道这些天大多数机器哪个更好,所以我可以把注意力集中在渲染方法*上。感谢。

*但我可能会为了它而使用'三角法'。

2 个答案:

答案 0 :(得分:7)

即使您提供OpenGL四边形,三角化也会由CPU侧的驱动程序完成,然后才能进入GPU。现在的GPU如今除了三角形之外什么都不吃。 (好吧,行和点。)所以有些东西会被三角测量,无论是你还是司机 - 它发生的地方并不重要。

如果您没有重复使用顶点缓冲区,而是每次使用四边形重新填充它们(在这种情况下驱动程序必须对每个顶点缓冲区进行重新网格化),而不是重新填充它们,那么效率会降低。每次都是三角形的三角形,但这是非常人为的(在这种情况下你应该解决的问题就在于你正在重新填充你的顶点缓冲区)。

我想说,如果你有选择的话,坚持使用三角形,因为大多数内容管道都是这样做的,并且你不太可能遇到非平面四边形等问题。如果您要选择内容的格式,请确保使用三角形,并且完全跳过三角测量步骤。

答案 1 :(得分:1)

任何几何体都可以用三角形表示,这就是决定使用三角形而不是四边形的原因。另一个原因是两个三角形不必是共面的,而对于四边形则不然。

是的,您选择渲染四边形,但驱动程序会将四边形转换为两个三角形。

因此,选择渲染四边形不会降低GPU的工作量,但会让你的CPU工作更多,因为它必须进行转换。