opengl 背面剔除+ GL_TRIANGLE_STRIP?

hi3rlvi2  于 2023-04-20  发布在  其他
关注(0)|答案(3)|浏览(110)

如果我有4个顶点,我按照这个顺序渲染:

2-3
|\|
0-1

使用GL_TRIANGLE_STRIP,然后我启用背面剔除,正面定义为CCW,那么左下角的三角形是否会面向我而另一个不面向我?如果是这样,渲染正方形的最有效方法是什么,以便两面都可见?我必须使用GL_TRIANGLES并向下传递6个顶点而不是4个吗?

qoefvg9y

qoefvg9y1#

strip基元在背面剔除方面做得很好。你可以认为tris的缠绕顺序是被管理的,以便strip中的每个三角形的顺序是一致的-例如,你可以认为GPU渲染(0,1,2),(2,1,3)...

ctrmrzij

ctrmrzij2#

三角形带中的所有三角形保持相同的方向/缠绕顺序。它们不会一个接一个地翻转。因此,两个三角形都将朝向您或远离您(假设您的图元是平坦的正方形(即凸形且不相交),其中所有顶点都属于同一平面)。
P.S.你知道,你可以在OpenGL应用程序中渲染trianglestrip原语,并启用剔除,然后自己看看。

jhiyze9q

jhiyze9q3#

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

图10.2(a)一个三角形带。(B)一个三角形扇。(c)独立三角形。这些数字给予了顶点数组中顶点的顺序。注意,在(a)和(b)中,三角形边的顺序由第一个三角形决定,而在(c)中,每个三角形边的顺序与其他三角形无关。

相关问题