8 SpecialFX
官方代码($sdk)\examples\08.SpecialFX
终于到irr的特效了。这个例子里有动态光影和粒子效果,还有irr自己的动态水表面。看官方例子的演示效果,感觉满好的。实际上换个更大的场景,效果就再也没有演示中的好了。不过换我自己做,估计还做不到irr这水平。接下来还是认真看看irr的特效如何使用好了。
这次创建irr设备的时候,CreateDevice的最后一个参数需要设为开启,它是深度缓冲区的使用开关。要产生动态光影的效果,需要借助深度缓冲区辅助进行动态光影计算,这个是我以前用OpenGL时就知道的常识。动态光影开启后,渲染速度会明显下降。十多年前的电脑,有部分低端显卡不支持深度缓冲,用OpenGL时都需要写代码检查显卡是否支持。irr引擎在这方面做的挺完善的,当你开启深度缓冲后,它会自动检查显卡是否支持深度缓冲,如果硬件不支持,会自动将它关闭。
首先创建了一个房子的场景节点。例子中读取了一个.3ds文件,作者介绍说,这是他用Anim08or做的房子模型,irr不支持.an8的格式,他就把它导出为.3ds格式了。国内本来就是盗版泛滥,用不着学作者的用免费软件做模型,直接用3dsMax或Maya做,做好后导成irr支持的格式就行了。作者做的模型很糟糕,他展示了irr的一个特殊功能,使用irr的Mesh管理器为Mesh创建了一个平面材质贴图。代码为:smgr->getMeshManipulator()->makePlanarTextureMapping(mesh->