什么是openGL中的顺时针面

Dan*_*ter 8 opengl graphics render raster culling

在背面剔除时,您可以使用面法线来查看面部是否指向远离相机的情况,如果以时钟方式或逆时针方向绘制三角形,则可以采用某种技术.

我对顺时针方向的这种技术很困惑.看起来使用这种方法,发送到图形卡的顶点数据的排序决定了它是朝向还是远离摄像机.我没有看到这有什么意义,因为相机可以向任何方向看,就好像顶点数据必须根据相机位置而改变,而这显然不是在CPU上完成的.

我怎么能理解这个?

fsw*_*fsw 12

这是从对面看的一个三角形:

顺时针与逆时针

3D空间中的3个点定义了一个三角形.此外,如果这些点是有序的(如此处),它们也确定三角形的两个边(面):顺时针和逆时针(它们由放在面内的顺序时钟确定将指向其顶点)

在上面的例子中,三角形是逆时针纹理的

现在想象这个三角形是骰子的一个元素:

ccw纹理框

如果您掷骰子(或围绕它旋转相机),我们从CCW的三角形变为CW,我们不希望它再被纹理化.

这个骰子实际上是由12个这样的三角形构成的,如果我们正确地命令它们,我们将只纹理6个一次面向相机.


Bar*_*icz 5

我将在示例四边形中向您展示:

  (0,0)-------(1,0)
    |           |
    |     X     |
    |           |
  (0,1)-------(1,1)
Run Code Online (Sandbox Code Playgroud)

我们假设我们正在开始(0,0).现在,如果你以"顺时针"顺序卷起(传递)顶点,那么下一个将是(1,0),(1,1)(0,1).(1,0)在2点或多或少地放置,(1,1)是4,依此类推.

因此GPU内存中的数据:0,0, 1,0, 1,1, 0,1.

当您将卷绕方向与您的设置相关联时,您可以轻松区分"前"和"后" - 想象更好,您可以将其绘制在透明的东西上,然后从另一侧看 - 卷起方向将是逆转.

因此,卷绕方向的规格仅仅是告诉GPU哪一侧是前方,哪一侧是后方,因为它不能自己做 - 三角形的两侧同样好,并且给定多边形的法向量可以无论是N-N.但是,GPU可以验证哪些与正确的清盘顺序一致.

"旧"红皮书的第2章对OpenGL特定的东西有一些很好的解释,这在今天仍然非常相关.