在Direct3D中巧妙的运用光照可以增强3D场景的真实感。
光照模型
1.环境光
环境光没有位置或者方向上的特征,只有一个颜色亮度值,并且不会衰减,所以在所有方向和所有物体表面上投射的环境光的数量是恒定不变,所以环境光一般用于较低代价和开销的模拟光照。
pd3dDevice->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_XRGB(36,36,36));
2.漫反射光
太阳的直射,日光灯的照射都是漫反射光的近似。这种类型的光沿着特定的方向传播。当它到达某一个表面时,会沿各个方向均匀反射,所以从任何方向观察,物体表面的亮度都是相同的。所以采用漫反射光照模型,无需考虑观察者的位置,但是需要考虑漫反射光的空间位置和方向。
3.镜面反射光
移动光源的话,镜面的光亮区会发生变换,这意味着镜面反射光与漫反射光不同,取决于观察者的角度,镜面反射与视觉相关。镜面反射光的计算量较大。
p3dDevice->SetRenderState(D3DRS_SPECULARENABLE,true);
4.自发光
自发光就是对象自己发出的光,它是通过对象的自发光材质实现的。
光源类型
光照模型是光纤的反射特征,而光源类型主要强调的是能够产生这些光照模型的方式以及光纤的位置,方向强度等特征。
点光源
方向光
聚光灯