参考教程
学习记录
这篇文章中主要介绍对已经渲染的地形进行光照渲染(其实没什么新东西)。本篇代码基于上一篇,框架如下:

为地形添加光照,我们主要是需要在 TerrainClass 中计算法线,然后使用 LightShaderClass 代替 TextureShaderClass 渲染就行了。在 TerrainClass 中,我们修改顶点及模型等结构体为其添加法线的变量,然后新增一个计算法线的方法。修改后的 TerrainClass 声明如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
法线计算方法如下:
1 | bool TerrainClass::CalculateNormals() |
除此之外,我们在 ShaderManagerClass 里新增 LightShaderClass 的对象,以及在 ZoneClass 里新增 LightClass 的对象,然后修改渲染的方式就可以了。
最终效果如下:

有光照的情况下我们的地形显得更加真实,源代码地址:DX11TerrainTutorial-TerrainLight