使用glScalef修复openGL中的颜色渲染

时间:2014-01-12 17:24:45

标签: opengl mirroring

我正在使用glScalef (-1.0, 1.0, 1.0)翻转我的openGL图像轴。然而,这完全弄乱了物体和颜色的渲染。我尝试过以下几点无济于事:

glEnable(GL_NORMALIZE);
glEnable (GL_DEPTH_TEST) ;
glEnable(GL_COLOR_MATERIAL);
glCullFace(GL_BACK);

如果我翻转x和y - glScalef (-1.0, -1.0, 1.0)那么颜色很好,但我不想翻转这两个尺寸。翻转x和z不会修复颜色。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

通过执行此操作,您更改了坐标空间的灵活性。实际上,当光栅化三角形时,前面会变成背面,因为卷绕方向是相反的。

您应该了解光栅化器如何确定多边形的正面/背面。它使用顶点的后投影位置并测试卷绕方向。您在后投影坐标系中翻转了1轴,这改变了惯性(更正式地说,它是chirality)。这会产生镜像,顶点的缠绕是向后的。

您可以使用glFrontFace (GL_CW)来解决这个问题,或者只是手动用另一种方式缠绕顶点。