5

我知道 OpenGL 在较新的版本中已弃用并删除了 GL_QUADS。我听说这是因为现代 GPU 仅使用三角形进行渲染,因此调用四边形只会使 GPU 更加努力地将其分成两个三角形(无论如何我都听说过,我不是任何方面的专家)这个话题)。

我想知道是自己手动将四边形渲染分解为两个三角形还是让 GPU 自己完成是否更好(假设普通人的 CPU 相对比他们的 GPU 更快)。同样,我刚开始时完全没有真正的 OpenGL 经验。我宁愿知道这些天对于大多数机器来说哪个更好,这样我就可以将注意力集中在任何一种渲染方法上*。谢谢。

*但我可能会为此使用“三角形方法”。

4

2 回答 2

10

即使您输入 OpenGL 四边形,三角化也是由 CPU 端的驱动程序在它到达 GPU 之前完成的。如今,现代 GPU 除了三角形之外什么都不吃。(嗯,还有线和点。)所以有些东西会三角测量,无论是你还是司机——它发生在哪里并不重要。

如果不重用顶点缓冲区,而是每次都用四边形重新填充它们(在这种情况下,驱动程序将不得不重新三角化每个顶点缓冲区),而不是每次都用预三角化的三角形重新填充它们,那么效率会降低。时间,但这是非常人为的(在这种情况下您应该解决的问题只是您正在重新填充顶点缓冲区的事实)。

我想说,如果你有选择的话,坚持使用三角形,因为这是大多数内容管道无论如何都会输出的,而且你不太可能遇到非平面四边形等问题。如果您要选择内容的格式,那么一定要使用三角形,然后完全跳过三角测量步骤。

于 2013-01-28T08:20:39.113 回答
1

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

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

因此,通过选择渲染四边形不会减少 GPU 的工作量,而是会使您的 CPU 工作量更多,因为它必须进行转换。

于 2013-01-28T07:29:39.980 回答