好久没写博客了,从现在开始,养成一个好的习惯,不断的进行总结。
以前都是直接用,效果好就行,不管是具体怎么设置的。现在突然想想什么都学不到,于是就自己动手调试了一番,做了一下总结:
OpenGL在处理光照的过程中主要包含三项内容,光源、材质和光照模型。也就是我们在光照设置的代码中常看到的glLightfv、glMaterialfv和glLightModelfv。其中要注意的是,GL_AMBIENT(环境光)、GL_DIFFUSE(漫反射光)、GL_SPECULAR(镜面反射)这三种属性是光源和材质所共有的。光源和材质的相同属性共同影响,并作用最终的显示效果。
1.光源
光源的设置按照3+1的原则来进行设置,3代表的是GL_AMBIENT、GL_DIFFUSE和GL_SPECULAR这三种属性,1代表的是光源的位置。光源的位置中又包含了两种模 式,一种是位置性光源,一种是方向性光源。具体的可参考OpenGL的API。
在这里不得不提的在整个环境中的光源个数问题。GL_LIGHT0代表第0号光源,依次类推。注意GL_LIGHT0与其他光源的默认属性是有区别的。GL_LIGHT0
GL_DIFFUSE,GL_SPECULAR的默认值是(1.0,1.0,1.0,1.0),而其他光源的默认值是(0.0,0.0,0