初始化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没有绘制三角形。但是情况恰恰相反。
我的观点和观点矩阵是正确的。是什么导致此问题?
最佳答案
glCullFace
指定哪一侧被剔除掉,而不是绘制哪一侧。因此,当按CCW顺序给出三角形并启用所有操作方式时,将剔除正面(CCW面),并且不会绘制任何内容。