Windows 8 Directx 开发学习笔记(七)水波纹的实现
使用DirectX实际开发中,模型的形状不可能都是一成不变,只依靠移动摄像机去实现动画。这里用实时更新顶点缓冲的方式生成一个水波模型,最终效果类似向水面扔石子时出现的水波纹。有了上一篇建立好的模型,实现这个效果仅需要更改WaterModel类和Renderer类里m_water的相关调用。
首先更改WaterModel的头文件,添加模拟变量成员和临时缓冲区指针,并增加两个方法Disturb和Update,整个类代码如下:
从整个过程来看,最重要的是模拟水面波动的算法,其他部分只是调用API,完成固定的渲染流程而已。因此只要完成算法,不管在哪个版本的DirectX里都可以使用。为了达到更真实的效果,还可以考虑石子的大小,入水时的力度等等。