3D游戏从入门到精通-21-22
来源:互联网 发布:免费产品推广软件 编辑:程序博客网 时间:2024/05/14 22:27
Atten = 1/( Attenuation0+ Attenuation1* d + Attenuation2* d2)
聚光灯比点光源多了方向,还多了内光圈和外光圈了的角度。因此,初始化灯光的结构时,就需要设置它们才能让聚光灯有效里显示出来。程序初始化如下:
//
//初始化灯光。
//蔡军生 2006/09/03
//
void CCAISpotLight::InitLight(void)
{
//
ZeroMemory( &m_meshMaterialFloor, sizeof(D3DMATERIAL9) );
m_meshMaterialFloor.Diffuse.r =
m_meshMaterialFloor.Diffuse.g =
m_meshMaterialFloor.Diffuse.b =
m_meshMaterialFloor.Diffuse.a =
m_meshMaterialFloor.Ambient.r =
m_meshMaterialFloor.Ambient.g =
m_meshMaterialFloor.Ambient.b =
m_meshMaterialFloor.Ambient.a =
m_pd3dDevice->SetMaterial( &m_meshMaterialFloor );
//聚光灯
ZeroMemory( &m_ligthSpot, sizeof(D3DLIGHT9) );
m_ligthSpot.Diffuse.r =
m_ligthSpot.Diffuse.g =
m_ligthSpot.Diffuse.b =
m_ligthSpot.Diffuse.a =
m_ligthSpot.Type = D3DLIGHT_SPOT;
m_ligthSpot.Position = D3DXVECTOR3(
//
m_ligthSpot.Direction = D3DXVECTOR3( 0, -1.0, 0 );
m_ligthSpot.Attenuation0 =
m_ligthSpot.Attenuation1 =
m_ligthSpot.Attenuation2 =
m_ligthSpot.Range =
//
m_ligthSpot.Theta = D3DX_PI/10;
m_ligthSpot.Phi = D3DX_PI/4;
m_ligthSpot.Falloff = 3.0;
m_pd3dDevice->SetLight( 0, &m_ligthSpot );
//
ZeroMemory( &m_meshMaterialSpot, sizeof(D3DMATERIAL9) );
m_meshMaterialSpot.Emissive.r =
m_meshMaterialSpot.Emissive.g =
m_meshMaterialSpot.Emissive.b =
m_meshMaterialSpot.Emissive.a =
}
上面首先设置地板的材料颜色,接着就初始化聚光灯的结构m_ligthSpot,这里选择灯光类型为D3DLIGHT_SPOT,颜色是白色。还设置了方向和位置,还有内圈的角度为D3DX_PI/10,而外圈的角度为D3DX_PI/4,从内光圈到外光圈衰减为3.0。
其它渲染部份,同点光源是一样的。
- 3D游戏从入门到精通-21-22
- 3D游戏从入门到精通-22
- 3D游戏从入门到精通-21
- 3D游戏从入门到精通-3
- 3D游戏从入门到精通-2
- 3D游戏从入门到精通-4
- 3D游戏从入门到精通-5
- 3D游戏从入门到精通-6
- 3D游戏从入门到精通-7
- 3D游戏从入门到精通-8
- 3D游戏从入门到精通-9
- 3D游戏从入门到精通-10
- 3D游戏从入门到精通-11
- 3D游戏从入门到精通-12
- 3D游戏从入门到精通-13
- 3D游戏从入门到精通-14
- 3D游戏从入门到精通-15
- 3D游戏从入门到精通-16
- 3D游戏从入门到精通-11 -15
- 建一个通用的处理数据的类
- 3D游戏从入门到精通-16 -20
- 如何提高网站的Google页面等级(PR值)
- 自定义标签tag
- 3D游戏从入门到精通-21-22
- 3D游戏从入门到精通-24. 26
- 3D游戏从入门到精通-28 .30
- 3D游戏从入门到精通-31 32 33
- CSS属性用法速查手册
- JavaEE到底忽略了什么?
- JAVA四种基本排序的总结
- c# 发送邮件
- 冲突的文化