背面剔除 + GL_TRIANGLE_STRIP?

11
如果我有4个顶点,按照以下顺序进行渲染:
2-3
|\|
0-1

如果我使用GL_TRIANGLE_STRIP并启用背面剔除,其中正面定义为逆时针(CCW),那么左下角的三角形会朝向我,而另一个三角形则不会吗?如果是这样,那么渲染正方形让两个面都可见的最有效方法是什么?我必须使用GL_TRIANGLES传递6个顶点而不是4个吗?

3个回答

6

条带图元在背面剔除方面表现良好。您可以将三角形的绕组顺序视为被管理,以便每个三角形的顺序保持一致 - 例如,您可以认为GPU渲染(0,1,2),(2,1,3) ...


4

三角带中的所有三角形都保持相同的方向/绕序。它们不会一个接一个地翻转。因此,两个三角形要么朝向你,要么远离你(假设你的基元是平面正方形形状(凸且不相交),其中所有顶点属于同一平面)。

P.S. 你知道吗,在启用剔除功能的OpenGL应用程序中渲染三角带基元,你可以自己看到。


1
或者您可以阅读文档:http://www.opengl.org/registry/doc/glspec42.core.20120119.pdf(第22页) - Mārtiņš Možeiko

2

其他答案中的“做正确的事情”或“保持相同的绕组顺序”的描述并不明确。为了展示绕组顺序是如何定义的,让我引用规范,即其图10.2(在OpenGL≥4.3中为图2.3)。

Figure 10.2

图10.2。(a)三角形带。(b)三角形扇形。(c)独立三角形。数字按顺序给出了顶点在顶点数组内的排序。请注意,在(a)和(b)中,三角形边缘的顺序由第一个三角形确定,而在(c)中,每个三角形的边缘顺序与其他三角形无关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接