Friday, February 20, 2009

Billboards 與 2D Sprites

在兩個星期前,我嘗試重新製作 Ogng3D 遊戲引擎中,用 OGRE 中的 Billboard 來做 2D Sprite 的方案,未改做前的 2D Sprite 是充滿著問題,而且還不能控制 Z-Order。這個重新製作用了不到一天時間便完成了,因為在測試期中發覺只需改一些地方,便能夠做到控制 Z-Order 的方法,對於 2D Sprite 系統來說,控制 Z-Order 是非常重要的事情。

今晚決定要試一試這個新的 2D Sprite 系統的速度上會是如何,我的家中有兩部電腦,它們的硬件是:
● AMD Athlon XP 1600+ 及 NVidia 6600 LE (AGP)
● Intel Pentium 4 3Ghz HT 及 NVidia 7600 GT (PCI-E)

我的測試是,Demo 會從畫面的正中央,不停地放出一個已隨機 Rotate 了的 Sprite,移動到畫面邊緣會停下來,不會刪除掉,總共放出 1024 個 ( 或而上 ),看看會不會出現明顯慢下來的情況。下面左圖是 AMD 的測試畫面 ( 以 Fullscreen 測試 ),右圖是 Intel P4 的畫面 ( 以 Windowed 測試 ),兩部電腦的測試速度上對我來說確實是很高,感覺不到速度有被拖慢。











新的 Sprite 系統是用了 BillboardSet + SceneNode 完成,初時還以為有這麼多的 Billboard,可能會令遊戲引擎慢下來,但結果是慢下來的情況非常低,甚至有點感覺不到 ( 相信是 3D card 還夠強勁 )。這次成功的改做了 Sprite 系統,那麼便可以真正地在 MilkShape3D 上,製作對應 Sprite 工具了,而且還可以嘗試製作 GUI 工具呢。

2 comments:

ejoy2u said...

你好,能透露一下怎么确定zorder的吗?
我也封装了billboard作为sprite,但是单个billboardset里的billboard之间无法确定zorder。

Ngan Lo ( 顏佬 ) said...

是的, 用billboardset中的 billboard 是不能確定 zorder, 所以在文中我只說用了billboardset + scenenode.... :(