3D游戏从入门到精通-22
![](https://p-blog.csdn.net/images/p_blog_csdn_net/caimouse/71665/o_%e4%be%8b3_10_3.bmp)
聚光灯比点光源多了方向,还多了内光圈和外光圈了的角度。因此,初始化灯光的结构时,就需要设置它们才能让聚光灯有效里显示出来。程序初始化如下:
//
//初始化灯光。
//蔡军生 2006/09/03
//
void CCAISpotLight::InitLight(void)
{
//
ZeroMemory( &m_meshMaterialFloor, sizeof(D3DMATERIAL9) );
m_meshMaterialFloor.Diffuse.r = 1.0f ;
m_meshMaterialFloor.Diffuse.g = 1.0f ;
m_meshMaterialFloor.Diffuse.b = 1.0f ;
m_meshMaterialFloor.Diffuse.a = 1.0f ;
m_meshMaterialFloor.Ambient.r = 1.0f ;
m_meshMaterialFloor.Ambient.g = 1.0f ;
m_meshMaterialFloor.Ambient.b = 1.0f ;
m_meshMaterialFloor.Ambient.a = 1.0f ;
m_pd3dDevice->SetMaterial( &m_meshMaterialFloor );
//聚光灯
ZeroMemory( &m_ligthSpot, sizeof(D3DLIGHT9) );
m_ligthSpot.Diffuse.r = 1.0f ;
m_ligthSpot.Diffuse.g = 1.0f ;
m_ligthSpot.Diffuse.b = 1.0f ;
m_ligthSpot.Diffuse.a = 1.0f ;
m_ligthSpot.Type = D3DLIGHT_SPOT;
m_ligthSpot.Position = D3DXVECTOR3( 0.0f , 2.0f , 0.0f );
//
m_ligthSpot.Direction = D3DXVECTOR3( 0, -1.0, 0 );
m_ligthSpot.Attenuation0 = 0.0f ;
m_ligthSpot.Attenuation1 = 0.1f ;
m_ligthSpot.Attenuation2 = 0.0f ;
m_ligthSpot.Range = 30.0f ;
//
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 = 1.0f ;
m_meshMaterialSpot.Emissive.g = 1.0f ;
m_meshMaterialSpot.Emissive.b = 1.0f ;
m_meshMaterialSpot.Emissive.a = 1.0f ;
}
上面首先设置地板的材料颜色,接着就初始化聚光灯的结构m_ligthSpot,这里选择灯光类型为D3DLIGHT_SPOT,颜色是白色。还设置了方向和位置,还有内圈的角度为D3DX_PI/10,而外圈的角度为D3DX_PI/4,从内光圈到外光圈衰减为3.0。
其它渲染部份,同点光源是一样的。
相关文章
- 3D点云实例分割_3d点云标注软件
- 3D游戏建模真的很累吗?前景怎么样?又需要哪样的基础
- Godot 2D 和 3D 游戏引擎[通俗易懂]
- js也能写3D游戏?
- Pygame学习笔记 6 —— 3D游戏
- 10156. 「一本通 5.2 例 4」战略游戏
- 网易游戏(互娱)2019年-游戏测试开发工程师部分真题
- vivo游戏:全程陪伴用户和开发者,携手共创至臻体验
- 8.12VR行业大事件:联想拯救者VR700头显将于8月18日亮相;《Rec Room》发布西部主题枪战游戏
- 小程序游戏相较于H5游戏的优点在哪里?
- 3d打相机-创想三维:3D扫描在3D打印机上的运用
- NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能
- AIGC发展太快!Meta发布首个基于文本的4D视频合成器:3D游戏建模师也要下岗了?
- 游戏成瘾的成因有哪些?如何防沉迷呢?
- 一组照片渲染出3D视频,单像素点实时渲染火了,网友:在家也能制作3A游戏了?
- Linux安装 Steam:一步一步迈向游戏世界(linux安装steam)
- Linux下的3D软件开发挑战(3d软件linux)
- 提升Linux游戏性能:究极之路(linux游戏性能)
- 使用Linux系统,轻松畅玩魔兽世界游戏(linux玩wow)
- Oracle VM 3D 开启独特虚拟化之旅(oracle vm 3d)
- 小米携“加密兔”入局区块链游戏,线上宠物大乱斗又添新成员
- C++实现2048游戏示例
- Unity3D游戏引擎实现在Android中打开WebView的实例