大多数游戏中,都有流光效果,这样大大增强装备的感官刺激。。
其实要实现流光,非常简单,只需要混合两层贴图,调整一下操作符,然后在流光贴图层变换UV就OK了。。。
但是这里有一个问题,也就是说这样的逻辑应该放在哪一层实现,如何实现?
我个人不推荐放在逻辑层实现。。。这样的话在逻辑层都出现了DEVICE之类的接口调用。。。缺乏美感了吧。。。
既然是纹理,那就应该用材质系统。。。
但是如果是用材质系统的话,我们先来看看OGRE对这样的效果有没有支持。。。。
其实但从实现流光的效果来讲,用OGRE的材质系统是可以实现的,1个pass里面2个TEXTURE_UNIT_STATE,搞定。。。
但是如果在我们的游戏中出现了500个装备,10种UV贴图,那就要配5000个材质脚本。。。
但是如果能将它们分离,而通过材质系统中叫做MaterialBlend的方法(自创,哈哈哈哈),由引擎的材质系统提供相关的接口,那这样就只需要配510个材质脚本。。
详细的设计就不提了。。。大致的思路就是通过passNew = pass1+pass2,用过重载操作符进行。。也有passNew = pass1*pass2,用以不同的方式混合
然后entity->setmaterial(passNew)
说起挺简单的,具体编码可能还是会遇到很多问题!