【Direct3D-11】光照和材质

惟日孜孜,无敢逸豫。——《尚书·君陈》。

惟:句首语气词,无义。日:每日,天天。孜孜(zī资):刻苦努力,不懈怠。逸豫:安适,逸乐。这两句大意是:每天勤勤恳恳,不敢安闲逸乐。这两句可供引用形容或描写有些人对工作和学习非常刻苦,经常孜孜不倦,辛勤努力。

四大光照类型

  • 环境光(Ambient Light)

一个物体没有光源照射,但是存在各种光线,通过折射反射到达这个物体,该物体内看见,基于真个自然界环境的整体亮度,成为环境光。

SetRenderState(D3DRS_AMBIENT, D3DCOLOR_CRGB(0,0,0));
  • 漫反射光(Diffuse Light)

太阳直射可以看做漫反射的近似。这种光的类沿着特定方向传播,当他到达某一表面时,将沿着各个方向均匀反射,所以无论从哪个方向观察,物体表面的亮度都是相同的。

采用漫反射这种光照模型时,无需要考虑观察的位置,但是要考虑漫反射反射光的空间位置和方向。

  • 镜面反射光(Specular Light)

沿着特定方向传播,当光到达某一个表面的时候,将严格的沿着另一个方向反射,从而形成只能在一个角度范围内才能观察到的高亮度照射。

镜面反射取决于观察者的角度。漫反射于视觉无关,镜面反射于视觉有关。

因为镜面反射于其他类型的光相比,计算量要大得多,所以Direct3D默认关闭镜面反射。

SetRenderState(D3DRS_SPECULARENABLE, true);
  • 自发光(Emissive Light)

物体自身发出的光,根据对象的自发光材质实现的。

三大光源类型

点光源(Point Light)

方向光(Directional Light)

聚光灯(Spot Light)

// 设置光源
SetLight()
// 启用光源
LightEnable()

材质

物体表面的材质属性决定了他能反射什么颜色的光线,以及能反射多少。

SetMaterial(const D3DMATERIAL9 *pMaterial);
GetMaterial(D3DMATERIAL9 *pMaterial);

Direct3D默认的材质属性反射所有漫反射的光,不反射其他光,也没有自发光颜色。

总结

光源属性

一个结构体D3DLIGHT9,两个方法 SetLight 和 LightEnable

材料属性

一个结构体 D3DMATTERIAL9,一个方法 SetMaterial 和法向量的计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值