我正在尝试清除在三角形条带顶点缠绕方向(顺时针和逆时针)中看到的一些不一致。我正在 OpenGL 中绘制一个逆时针旋转 90 度的梯形。以下是相关代码:
unsigned char mIndices[] = { 0, 1, 2, 3, 4, 5 };
signed short mVertices[] = {
-50, 100, 0, // A
-85, 65, 0, // B
-50, 65, 0, // C
-85, -65, 0, // D
-50, -65, 0, // E
-50, -100, 0, // F
};
...
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_SHORT, 0, mVertices);
...
glDrawElements(GL_TRIANGLE_STRIP, sizeof(mVertices)/sizeof(mVertices[0]), GL_UNSIGNED_BYTE, mIndices);
从我在这里读到的内容来看,OpenGL 中的默认正面是逆时针方向的,这意味着我的条带中的第一个三角形的顶点应该是逆时针方向排列的。此外,在绘制三角形条带时,绕组在逆时针和顺时针方向从三角形切换到三角形,因此我的顶点以这种方式排序。所以从我的代码中,第一个三角形是 ABC,第二个是 BCD,第三个 CDE,第四个 DEF。但是,这篇文章(在 OpenGL 编程指南的引文中)说它将把它们绘制为 ABC、CBD、CDE、EDF(假设 v0 - A、v1 - B 等),这意味着它们都以相同的逆时针方向缠绕方向。
如果我从 OpenGL 规范中正确理解了 A/B 表示法,那么这些三角形都会以相同的方向缠绕,但我已经在几个不同的地方看到了不同的缠绕。我想这只是语义问题,因为结果形状是相同的,但实际的缠绕顺序是什么?