初始化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面),并且不会绘制任何内容。

10-06 01:43