Ogre的渲染優化心得(二) -- Renderable和渲染批次, MovableObject和攝像機裁剪, SimpleRenderable和地形

優化之前,先理解優化的原理.

 

1).Renderable和渲染批次:

      渲染批次是神馬?自己去看教程,簡單講,他極大地影響渲染的效率,所以渲染批次儘量少.比如10個批次,渲染10000個三角形,比10000個批次,渲染10個三角形速度快得多,

     怎麼纔算一個批次?渲染一個Renderable就算一個批次,Renderable是Ogre中最小的渲染單元,所有需要渲染的對象都繼承與此.

一句話:一個renderable等於一個batching(渲染批次),減少場景中的renerable,就減少了批次.

     怎麼減少renderable?比如2棵材質一樣的樹(2個renderable),我可以合成一個棵樹(1個renderable),合成辦法2種,一種是美工在max裏面靜態合併,一種是程序動態合併(StaticGeometry)

 

值得一提的是,一個mesh不一定是一個批次,submesh纔是,如果一個mesh有2個不同材質的submesh,正常,

如果有2個同材質的submesh,不好,應該立即找美工,罵他一頓.說:爲什麼不把同材質的2個submesh合成一個?

 

2)MovableObject和攝像機裁剪

     Ogre的OctreeSceneManager的攝像機裁剪,是以包圍盒爲準,那麼就意味着有包圍盒的對象纔可以被裁剪,Renderable有包圍合麼?沒有!但是MovableObject就有,MovableObject是移動對象的基本,同時繼承ShadowCaster,可以投射陰影.

值得一提的是,攝像機的裁剪並不是以MovableObject而單位,而是以SceneNode爲單位,只有掛接到SceneNode上的MovableObject才

會被裁剪,

3)要渲染,Renderable,要移動,Moveable,如果都要,最簡單的對象應該就是SimpleRenderable : public MovableObject, public Renderable

想起以前自己做地形用mesh去做,很笨,效率不行,應該mesh類太大,包含了太多不需要的東西,用SimpleRenderable是最高效率的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章