我得到了大部分的照明工作,我想要的方式,但我似乎完全缺少任何环境照明。也就是说,事物的远离太阳的一面是完全黑色的(我希望有50%的环境),而朝向太阳的一面看起来像我所期望的那样。为什么我的开放式环境照明不起作用?
这是我的灯光设置代码(由原来的编辑,见下面的注释):
- (void) setupLighting
{
const float amb = 2.0;
const float LightAmbient[][4] = { { amb, amb, amb, 1.0f },
{ amb, amb, amb, 1.0f }
};
const float LightDiffuse[] [4] = { { 1.0f, 1.0f, 1.0f, 1.0f },
{ 1.0f, 1.0f, 1.0f, 1.0f }
};
const float LightPosition[][4] = { { 1.0f, 4.0f, 2.0f, 0.0f },
{ 0.0f, 10.0f, 0.0f, 1.0f }
};
glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient[0]);
glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse[0]);
glLightfv(GL_LIGHT0, GL_POSITION, LightPosition[0]);
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient[1]);
// etc., snip -- no LIGHT1 for this round
glColorMaterial (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
glEnable(GL_COLOR);
//glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHT0);
//glEnable(GL_LIGHT1);
glEnable(GL_LIGHTING);
}
(注:光线1注释掉现在 - 我只是试图让LIGHT0做我想做的。 )
不知道它是否重要,但我正在使用glDrawArrays()绘制单位对齐的纹理映射单位立方体(一个MineCraft)。我所有的法线似乎都是正确的。如果我离开照明关闭,所有东西都可以正确绘制(只是平坦的。)
任何提示?
谢谢!
编辑(新增截图)
编辑每评论,我撞到的环境值高达2.0,现在它看起来像什么会期望为约50%的环境我。这看起来很糟糕 - 我认为照明值被固定在[0,1] ...?关于环境光的基本概念是不是在追求什么?
您是否尝试增加环境光并查看它是否会影响结果?如果是这样 - 光线正在工作 – Andrew 2011-06-04 17:59:03
也许我没有得到它,但它们并非完全黑色。他们是黑暗的,但肯定不是黑人。 – Bart 2011-06-04 18:14:27