我正在尝试清除我在三角形条顶点缠绕方向(顺时针和逆时针)看到的一些不一致.我正在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);
Run Code Online (Sandbox Code Playgroud)
从我在这里看到的,OpenGL中的默认正面是逆时针方向,这意味着我的条带中的第一个三角形应该有逆时针方向排列的顶点.另外,当绘制三角形条带时,绕组在逆时针和从三角形到三角形的顺时针方向之间切换方向,因此我的顶点以这种方式排序.所以从我的代码中,第一个三角形是ABC,第二个是BCD,第三个CDE和第四个DEF.然而,这篇文章(在OpenGL编程指南的引用中)表示它会将它们绘制为ABC,CBD,CDE,EDF(假设v0-A,v1-B等),这意味着它们都逆时针旋转方向.
如果我从OpenGL规范中正确理解A/B符号,那么三角形都会向相同的方向旋转,但我已经在几个不同的地方看到了变化的绕组.我想这只是一个语义问题,因为产生的形状是相同的,但实际的缠绕顺序是什么?