为一个场景添加光照的步骤如下。
1,启用光照
Device->SetRenderState(D3DRS_LIGHTING,true);
2,为每个物体创建一种材质,并在绘制相应物体前应用(设置)该材质
D3DMATERIAL9 mtrl;
Device->SetMaterial(&mtrl);
3,创建一种或多种光源,设置并启用。
D3DLIGHT9 dir;
Device->SetLight(0,&dir);
Device->LightEnable(0,true);
4,启用所有其余的光照装填,如镜面高光(specular highlights)
Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);
Device->SetRenderState(D3DRS_SPECULARENABLE, true);
小结
1。Direct3D支持3中类型的光源模型:方向光,点光源以及聚光灯。
每种光源可以发出三种光:环境光,漫射光和镜面光。
2。表面的材质定义了光线与其到达表面的交互方式(既表面能反射何种颜色的光以及反射多少,以确定表面的颜色)
3。顶点法线用于定义顶点的方向。Direct3D借助顶点法线向量来确定光线到达顶点时的入射角。
在某些情况下,顶点法向量与由其构成的三角形单元的法向量相等,但如果用三角形单元组逼近表示光滑的曲面(缛球体,圆柱体等)时,情况就未必如此了。