永远也不完美的程序

不断学习,不断实践,不断的重构……

常用链接

统计

积分与排名

好友链接

最新评论

关于材质与渲染状态的一些心得

        写代码这么久,材质、渲染状态和shader的问题一直给我有很大的困拢,今天为了整理一下思路,决定写一下设计文档和序列图。经过这样一写,和对之前渲染状态管理的一些文章的理解,思路终于清楚了一点。

        原来我是把材质使用及shader的调用都写在一起,这样写很不好。因为渲染状态与shader是应该分组,然后在某一组中只调用一次,而材质的使用(一般是纹理的使用),是每个renderobject都在渲染前都要设置的。

        我觉得比较合理的做法是:把渲染状态与shader封装在一起,我这里统称shader,假如使用了effect,可以不做渲染状态的封装。然后,在渲染前要根据场景或整个游戏中用到的相同的shader进行分组。然后把拥有这些shader的物体都放进该shader的渲染队列中去。在渲染过程中,首先遍历所有组,在每组开始时,设置好渲染状态,包括shader的全局参数的设置,然后针对每个渲染物只做设置材质的操作(这里的操作是:设置纹理、设置shader需要从renderObject中取得的参数)。

        排序流程:首先根据shader分组,把相同分组的渲染物放到同一个队列,  然后,在同一个队列中,把相同材质的放在一起,这样就可以减少纹理的切换。呵呵,今天先写这么多,接下来要好好设计一下。

posted on 2009-06-16 16:46 狂烂球 阅读(2049) 评论(0)  编辑 收藏 引用 所属分类: 图形编程


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理