灯光

灯光分为:

环境光,漫反射,镜面反射。

在用到镜面光时,必须打开,默认状态为关闭:

Device->SetRenderState( D3DRS_SPECULARENABLE, true)

 

材质:

Diffuse: 指定此表面反射的漫射光数量。

Ambient : 指定此表面反射的环境光数量

Specular : 指定此表面反射的镜面光数量

Emissive : 这个是被用来给表面添加颜色,它使得物体看起来就象是它自己发出来的一样

Power :     指定锐利的镜面高光,它的值是高光的锐利值。

 

D3DMATERIAL9 red

ZeroMemorey( &red, sizeof(red));

red.Diffuse = D3DXCOLOR( 1.0F, 0.0F, 0.0F, 1.0F)  //RED

red.Ambient = D3DXCOLOR( 1.0F, 0.0F, 0.0F, 1.0F)  //RED

red.Specular = D3DXCOLOR( 1.0f, 0.0f, 0.0f, 1.0f)  //red

red.Emissive = D3DXCOLOR( 0.0f, 0.0f, 0.0f, 1.0f)  //no emission

red.Power = 5.0;

 

设置材质: 一个通用的材质必须被设置

Device->SetMaterial( &red);

 

光源:  点光源, 方向光源, 聚光灯。

 

Type  : 定义灯光类型, D3DLIGHT_POINT, D3DLIGHT_SPOT, D3DLIGHT_DIRECTIONAL

Diffuse : 此光源发出的漫射光颜色

Specular : 此光源发出的镜面光颜色

Ambient : 此光源发出的环境光颜色

Position : 用一个向量来描述的光源世界坐标位置, 这个值对于灯光的方向是无意义的。

Dirction : 用一个向量来描述的光源世界坐标照射方向。这个值不能用在点光源上。

Range   : 灯光能够传播的最大范围。不能用于方向光源。

Falloff    : 这个值只能用在聚光灯上。强度衰减,它的值通常设置为1.0f。

Attenuation0 、1、2 :这些衰减变量被用来定义灯光强度的衰减。只能用在点光源和聚光灯上。Attenuation0定义恒定衰减, Attenuation1 定义线性衰减,Attenuation2 定义二次衰减

 

Theta   : 只用于聚光灯: 指定内圆锥的角度,单位是弧度。

Phi       : 只用于聚我灯: 指定外圆锥的角度, 单位是弧度。

 

D3DLIGHT9 light;

ZeroMemory( &light, sizeof( light));

light.Type = D3DLIGHT_DIRECTIONAL;

light.Ambient.x = 1.0;

.......

light.specular.............

 

初始化好后,我们需要用Direct3D内在支持的灯光来注册

Device->SetLight( 0, &light);

一旦灯光注册了,要打开或关灯光

Device->LightEnable( 0, true); //true是打开灯光

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值