马肝写的一些关于优化渲染效率的技术。
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 阅读(374)
评论(0) 编辑 收藏 引用