2010-11-07 103 views
1

我有我所有的OpenGL照明正常工作,与法线,材料等...OpenGL光照问题

我的问题是其中的OpenGL渲染的面孔时,光是面对落后的方式。如果光照在脸后,它应该呈现一张黑色的脸,但它会渲染脸的背面看起来像。我该如何阻止这种奇怪的行为。我发现很难描述正在发生的事情,但希望你知道如何解决这个问题。

在此先感谢。

编辑:好吧,说我有一个平方形多边形来反转墙。无论哪侧我都有灯,即使只有一面应该点亮,另一面应该是黑色(或者因为其他/环境光线而非常暗),它们都会点亮。看到问题了吗?它像纸一样,因为光线正在通过并出现在脸部的错误一侧。

+0

你的顶点是否有法线? – CiscoIPPhone 2010-11-07 02:53:56

+0

是的,法线没有问题。 – 2010-11-07 02:58:46

+0

您尚未将GL_LIGHT_MODEL_AMBIENT设置为明亮吗? – epatel 2010-11-07 21:13:18

回答

2

您看到的问题是因为多边形的两侧在其照明计算中使用相同的法线。

的解决方案是设置:

float modelTwoside[] = {GL_TRUE}; 
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, modelTwoside); 

这导致OpenGL渲染背面侧之前扭转法线。 OpenGL也将使用背面材质。

+0

这并不能解决问题。 – 2010-11-07 03:58:49

+0

然后我不知道问题是什么,也许你可以做一个最小的测试用例来证明问题并告诉我们。 – CiscoIPPhone 2010-11-07 10:25:40