我已经开始开发一个游戏引擎一个月了,完成了基本的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);
与我预期的不同,它给我提供了像相机所在处有灯光一样的照明!每个表面都有相同的照明!
我做错了什么?
谢谢,感激不尽。