设计模式享元在游戏中的使用
享元模式应该算是23个设计模式里面最难理解的了,个人觉得主要原因是四人帮的这个例子做的不好。
享元把一个对象分成内部状态和外部状态。
内部状态:不随外界环境改变而改变的共享部分。
外部状态:随着环境的改变而改变,不能够共享的状态。
如果内部数据相当大并且这样的对象比较多,享元减少的内存会相当可观的。
游戏场景中显示的大量对象,其中有一些对象具有相同的模型网格,但是他们的动画状态,纹理蒙皮,位置都不相同。可以把这些网格模型创建一份,然后各个角色对象对其引用作为内部状态,而各个角色对象保存自己的动画矩阵,纹理,模型矩阵作为外部状态。当角色状态变化的时候,只改变这些外部状态。渲染的时候再把模型网格和这些外部状态丢给VS。