D3DXSprite做为D3D9里面一个非常好用的接口,一直以来被我用来完成所有的2D绘制工作
但是,为了开发更快的2D绘制引擎,我决定考虑一下它的效率问题
用过 sprite 的就知道,它一次只能绘制一个 tile(这里用tile代表一个纹理,或者一个纹理中的某个矩形区域),那么大家看看现在的2D游戏,每一屏(每一次刷新)一般要绘制多少个tile????
大家应该心理有数吧,我就暂且定为 1000-2000 个,那么也就意味着我们要调用“sprite->Draw”这个方法 1000-2000 次,这个时候你的FPS是多少呢???(大家心理也应该有个底吧,反正我是做过很多次测试了,我的机器跑上天也就60)
也许你要说:“那是你的机器太破啦~~~~~~~~~~~”
但是请你不要忘记,写游戏的目的,并不是让它在好机器上跑的流畅。而是让它在尽可能多的用户的机器上跑得流畅。这也是我写游戏一直的目标(如果你不是,那你看到这里就够了,去看别的主题吧。。。。)
造成这种状况的目的很清楚,并不是你的机器不好,而是多次调用“sprite->Draw”,让你的显卡GPU几乎处于闲置状态.
要解决这个问题,我们可以使用D3D中的 Vertex buffer
但是我又不想放弃 sprite 。因为它可以使我们的2D游戏算法最大的简单化。
我也曾经看过,sprite可以一次绘制多个tile,可是忘记在哪里看的了,那篇文章上也没说怎么实现。
如果有知道的,请马上告诉我。。。。。。。。。。。
我舍不得的SPRITE哦~~~~~~~~~~~~~~~~ [em07][em07][em07][em07][em07] |