因此,我一直在寻找程序的优化方法,并且想知道是否使用QUADS是最有效的方法。.我正在对QUADS顶点和TEXTURE坐标使用映射的交错VBO。

因此,我想知道在使用以下之一而不是QUADS进行渲染时是否可以明显提高性能:

注意:这需要包括我正在使用纹理的事实!


TRIANGLE_STRIPS
三角形
QUAD_STRIPS


哪个最快?

注意2:我环顾四周,找不到确切的答案。

最佳答案

GL_QUAD_STRIP已被弃用,当前版本的OpenGL中不支持GL_TRIANGLES,所以已经不存在了。另外,它还是不太快-请参阅this post,详细了解为什么不再支持它(出于兼容性目的而保存)。
GL_TRIANGLE_STRIP通常是一个好方法。它比使用过时的功能要快。而且它在原理上也更快-无论如何,四边形都会分解为三角形,因此,您只需在CPU端执行一次,然后保存它必须做的GPU工作,就可以节省大量不必要的工作。三角形是指定形状的一种标准且完美的方法。
GL_TRIANGLESGL_TRIANGLE_STRIP快,因为在指定第一个三角形之后,需要一个点而不是三个点来指定每个三角形。使用三角形之前的前两个顶点。您可以获得连接的三角形,但同时也使用较少的内存。因为您不必阅读太多,所以可以更快地处理。并且由于您的最后两个顶点是在最后一个三角形中指定的,因此与可能来自谁知道哪里的其他两个顶点相比,它们将更容易在内存中获取。还有一些技巧,可以使用简并的​​三角形带来实现三角形之间的无缝跳转。


如果您想要三者中的最佳性能,则可以使用GL_TRIANGLE_STRIP。不幸的是,除非您的数据已经指定用于三角带,否则您必须自己定点顶点,并记住放置退化三角形的位置。高度图(即地形)是一个很好的起点。但是,首先优化代码的其他部分(例如,确定是否绘制对象)可能会更好地利用您的时间。我可能是错的,我认为纹理的使用不会影响您对顶点规格的选择。

编辑:这是一个如何使用渲染正方形的示例

顶点:(0,0)(0,1)(1,0)(1,1)

三角形1:(0,0)(0,1)(1,0)(1,1)

三角形2:(0,0)(0,1)(1,0)(1,1)

09-28 10:12