馬肝寫的一些關于優化渲染效率的技術。
http://oiramario.cnblogs.com/archive/2006/06/02/415394.html
看完是挺有感悟的。之前一直以為,如果不提交新數據的話,只是做重復的DP應該是沒有什么效率耗費的,畢竟Ogre中是有這一項技術的(iteration per light)。不過在那里討論了之后,被告知DP的調用是嚴重受到制約的,大失所望,此后使用multiple pass的時候就要思量思量了。
此外想到state change,撇開DP不說,其實提交頂點數據算是一種state change,只是以前一直狹隘的認為SetRenderState(), SetTextureState()之類的才算state change罷了。
state change是有開銷的,這在很多書籍方面都有記錄。Ogre的渲染隊列中,對渲染對象是根據render state進行歸類的,每個state一組,渲染的時候盡量減少change的開銷。而排序是根據渲染對象的z值進行,(不透明質材)以盡量減少render target的寫入為目標。
兩種方式的結合是先用state進行歸類,然后在每個類別中進行排序,關于這個是瞎猜的^_^。
posted on 2006-06-04 21:15
LOGOS 閱讀(378)
評論(0) 編輯 收藏 引用