C++ 不正确的OpenGL绕组

C++ 不正确的OpenGL绕组,c++,opengl,C++,Opengl,初始化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.

初始化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指定剔除哪一侧,而不是绘制哪一侧。所以当你的三角形是按逆时针顺序给出的,并且你以你的方式启用了所有的东西时,前面的逆时针面会被剔除,而不会绘制任何东西

glCullFace指定剔除哪一侧,而不是绘制哪一侧。所以当你的三角形是按逆时针顺序给出的,并且你以你的方式启用了所有的东西时,前面的逆时针面会被剔除,而不会绘制任何东西

你说你的矩阵是正确的,但请出示它们以便我们知道。你的矩阵可以简单地从另一边看三角形。是的,这意味着绕组取决于你是向下看+Z还是-Z;,因为这是一个背面剔除。你说你的矩阵是正确的,但请出示它们,以便我们知道。你的矩阵可以简单地从另一边看三角形。是的,这意味着绕组取决于你是向下看+Z还是-Z;,因为这是一个背面剔除。谢谢!看起来我没有正确理解这个概念非常感谢。看起来我没有正确理解这个概念