光照的两大要素是光源和物体的材质,物体表面材质属性决定了它能反射什么颜色的光线以及反射多少光线。
一、Direct3D中材质的定义
D3D中材质通过D3DMATERIAL9结构来表示:

typedef struct D3DMATERIAL9 ...{
D3DCOLORVALUE Diffuse;
D3DCOLORVALUE Ambient;
D3DCOLORVALUE Specular;
D3DCOLORVALUE Emissive;
float Power;
} D3DMATERIAL9, *LPD3DMATERIAL9;- Diffuse-指定表面反射的漫反射光。
- Ambient-指定表面反射的环境光。
- Specular-指定表面反射的镜面光。
- Emissive-表面本身自发光。
- Power -镜面高光,它的值是高光的锐利值,该值越大表示高光强度与周围亮度相差越大。
表面顶点的颜色亮度总和为:
I表示物体的颜色值,上式表示物体的颜色总和=物体反射环境光+物体反射漫反射光+物体反射镜面反射光+自发光。
二、材质的应用
函数IDirect3DDevice9::SetMaterial()设置Direct3D当前的材质属性:
HRESULT SetMaterial(
CONST D3DMATERIAL9* pMaterial
);
参考文献:
Frank D. Luna:Introduction to 3D Game Programming with DirectX 9.0
翁云兵:3D游戏程序设计入门(DirectX9.0)
陈卡:DirectX9 3D 图形程序设计
本文介绍了Direct3D中材质的基本概念及其在光照模型中的作用。包括漫反射、环境光、镜面反射及自发光等属性,并说明了如何使用IDirect3DDevice9::SetMaterial函数来设置材质。
1110

被折叠的 条评论
为什么被折叠?



