灯光D3DLIGHT9
来源:互联网 发布:价签打印软件 编辑:程序博客网 时间:2024/05/16 19:10
在D3D中有3种类型的灯光,用它们可以让3D世界显得真实 。
一、灯光类型
1、点光(Point Light)
从一个点向周围均匀发射的光,有最大的照明范围,亮度随距离衰减,最明显的一个例子就是我们家里用的灯泡。
2、方向光(Directional Light)
方向光是一组没有衰减的平行光,类似太阳光的效果。
3、聚光灯(Spot Light)
最复杂的一种灯,有光源点位置、有方向、有范围、有发光的内径和外径,光照强度还会随距离衰减。类似的例子是电筒。
二、灯光结构
D3D中灯光通过D3DLIGHT9结构来表示:
typedef struct D3DLIGHT9 {
D3DLIGHTTYPE Type;
D3DCOLORVALUE Diffuse;
D3DCOLORVALUE Specular;
D3DCOLORVALUE Ambient;
D3DVECTOR Position;
D3DVECTOR Direction;
float Range;
float Falloff;
float Attenuation0;
float Attenuation1;
float Attenuation2;
float Theta;
float Phi;
} D3DLIGHT9, *LPD3DLIGHT;
D3DLIGHTTYPE Type;
D3DCOLORVALUE Diffuse;
D3DCOLORVALUE Specular;
D3DCOLORVALUE Ambient;
D3DVECTOR Position;
D3DVECTOR Direction;
float Range;
float Falloff;
float Attenuation0;
float Attenuation1;
float Attenuation2;
float Theta;
float Phi;
} D3DLIGHT9, *LPD3DLIGHT;
- Type-灯光类型,共3种:D3DLIGHT_POINT、D3DLIGHT_SPOT、D3DLIGHT_DIRECTIONAL。
- Diffuse-光源发出的漫反射光颜色。
- Specular-光源发出的镜面光颜色。
- Ambient-光源发出的环境光颜色。
- Position-用向量表示的光源世界坐标位置(对方向光无效)。
- Direction-用向量表示的光源世界坐标照射方向(对点光源无效)。
- Range-灯光能够传播的最大范围(对方向光无效),该值不能应小于
- Falloff-灯光从内圆锥到外圆锥之间的强度衰减(仅对聚光灯有效),该值通常设为1.0f。
- Attenuation0、Attenuation1、Attenuation2-灯光衰减变量,用来定义灯光强度的传播距离衰减(对方向光无效)。Attenuation0定义恒定衰减,Attenuation1定义线性衰减,Attenuation2定义二次衰减。Attenuation0通常为0.0f,Attenuation1通常为1.0f,Attenuation2通常为0.0f。适当的使用如下公式,D代表到光源的距离,A0、A1、A2分别与Attenuation0、Attenuation1、Attenuation2相匹配。
- Theta-指定灯光内圆锥的角度(仅对聚光灯有效),单位是弧度。
- Phi-指定外圆锥的角度(仅对聚光灯有效),单位是弧度。
三、灯光的设置
灯光的属性设置好后,需要把这个灯光加入到场景中:
// 要让渲染的时候灯光起作用,运行这条命令
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
// 设置0号灯为我们设置的灯
g_pd3dDevice->SetLight( 0, &light );
// 打开0号灯光
g_pd3dDevice->LightEnable( 0, TRUE );
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
// 设置0号灯为我们设置的灯
g_pd3dDevice->SetLight( 0, &light );
// 打开0号灯光
g_pd3dDevice->LightEnable( 0, TRUE );
在使用灯光的时候需要注意的一点是,要为每个顶点设定法线,只有设置了法线,灯光才会起作用。什么是法线?其实就是一个和该点所在面垂直的向量。
- 灯光D3DLIGHT9
- Direct3D基础-灯光D3DLIGHT9
- 灯光
- 灯光
- 灯光
- 灯光
- 灯光
- 灯光
- 灯光
- D3DLIGHT9结构体 简介
- MAYA灯光 灯光雾
- UVA10110-灯光
- OSG灯光
- 灯光师小明
- 灯光师小明
- 灯光师小明
- 灯光师小明
- 灯光师小明
- 手机通信原理及防监控措施(转)
- 第一个Python程序
- 钟南山麓
- linux cp命令 取消覆盖文件时提示
- 浅见3G
- 灯光D3DLIGHT9
- js 居中
- 使用ID3算法构造决策树 - 简介、概念及实例
- 主页被篡改为369.com的一个解决方法
- 网页新手30条进阶秘技
- CentOS ntfs 支持
- 一种基于NS的网络视频QoS分析方法
- Visual Studio 2010 + .NET 4.0Beta1发布!
- IJPP, Vol. 37, No. 3 (博主翻译)