初始化OpenGL时,我设置了以下内容:
glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);
glCullFace(GL_FRONT);
然后,我在屏幕上画一个三角形。这就是我所做的一切,真的。但是OpenGL总是使用我使用glFrontFace
指定的相反绕组类型。
三角形顶点定义如下:
static GLfloat TRIANGLE[] = {
0.0f, 0.5f, 0.0f, // Point 1 on image
-0.5f, -0.5f, 0.0f, // Point 2
0.5f, -0.5f, 0.0f, // Point 3
};
您可以在以下图片中看到结果:
我期望GL_CCW绘制三角形并且CL_CW没有。但结果恰恰相反。
我的观点和观点矩阵是正确的。什么可能导致这个问题?
答案 0 :(得分:5)
glCullFace
指定哪一方被淘汰,而不是哪一方被抽出。因此,当您按照CCW顺序给出三角形并按照您的方式启用所有内容时,前面(CCW面)将被剔除,并且不会绘制任何内容。