我已经在游戏引擎上工作了一个月,并且我已经完成了基本的 OpenGL 内容。然而,我无法像我期望的那样工作的一件事是照明。(注:这是我第一次认真使用 OpenGL)
我想要的是一个接近真实的照明模拟——面对光线的表面比那些更远的表面更亮,等等。基本的光应该有一个位置和颜色。这就是我认为可以实现的方式:
float lightv[4]; // populated with (0.6, 0.6, 0.6, 1)
float positionv[4]; // populated with (0, 10, 0, 1)
int lightID = GL_LIGHT0;
int attenuationType = GL_LINEAR_ATTENUATION;
float attenuationValue = 1;
glLightf(lightID, attenuationType, attenuationValue);
glLightfv(lightID, GL_DIFFUSE, lightv);
glLightfv(lightID, GL_POSITION, positionv);
glEnable(lightID);
它没有做我期望它做的事情,而是给我照明,就好像相机所在的地方有一盏灯一样!每个表面都有相同的照明!
我究竟做错了什么?
谢谢你,我很感激。