【发布时间】:2015-07-08 11:59:59
【问题描述】:
在初始化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 没有。但发生的情况恰恰相反。
我的视角和视图矩阵是正确的。什么可能导致这个问题?
【问题讨论】:
-
您说您的矩阵是正确的,但请出示它们以便我们知道。您的矩阵可能只是从另一侧查看三角形。
-
是的,我会建议缠绕取决于您是向下看 +Z 还是 -Z。
-
glCullFace(GL_BACK);,因为它是背面剔除。