OpenGL照明问题

时间:2010-11-07 02:32:25

标签: c++ opengl

我的所有OpenGL灯光都能正常工作,包括法线,材料等......

我的问题是当光线在脸部后面时,OpenGL渲染面部的方式。如果光线在脸部后面,它应该呈现黑色面部,而是呈现脸部背面的样子。我该如何阻止这种奇怪的行为。我发现很难描述正在发生的事情,但希望你知道如何解决这个问题。

提前致谢。

编辑:好的,我说我有一个扁平的方形多边形来重复墙壁。无论我打开哪一侧,即使只有一侧应该点亮而另一侧应该是黑色(或者因为其他/环境光而非常暗),两者都会被点亮。看到问题?它就像纸一样,因为光线正好经过并出现在脸的错误一侧。

1 个答案:

答案 0 :(得分:2)

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

解决方法是设置:

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

这会导致OpenGL在渲染背面之前反转法线。 OpenGL也将使用背面材料。