GoodNight

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  4 Posts :: 2 Stories :: 16 Comments :: 0 Trackbacks

常用链接

留言簿(2)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

这些天在写场景管理的一些内容以及渲染自己导出的模型的渲染器...

首先先说两个导致我花了1天才解决的两个弱智BUG...望大家以后注意....

1. 如果使用固定管线渲染...千万千万记得在创建D3DMATERIAL9对象的时候ZeroMemory一下.....不然哪天你没有设置镜面光或者环境光的系数的时候就啥都看不到了....
2.由于粗心大意...在SHADER传参的时候将pEffect->SetTexture("g_Tex",...);写成了pEffect->SetTextrue("g_tex",...),结果悲剧就发生了....

这两天在测试模型渲染器的效率....遇到一些问题....还望各位大牛指点一下...

先来比较一下这两张图:





首先说一下,当把静态模型加到1000个以后,也就是所谓的百万个三角形后,其实对渲染的效率影响并不是很大...
可见现在GPU对于顶点的处理基本不是问题(不要太变态的情况下)...顺便提一句,我的是7300GS显卡

在渲染过程中用的是VS&PS2.0

但是大家可以看到第一张图中帧数比第二张图中的帧数少了8帧左右

先忽略掉那多出来的20个1024个面,我认为不是关键...

这两次渲染中我只是将模型的缩放比例从0.4变为了0.2,仅此而已...
不影响场景管理...因为我的场景管理还没有加动态的对象...呵呵...
那为什么效率出现了差别...

比较直观的看就是说第一张图中像素对后台缓冲区的填充率更高...而第二个更低...
那换句话说依然瓶颈是在于像素着色...但是具体在于像素着色的哪个方面呢,望高手解答一下...

再给一张图作为参考



其实这张图中渲染了200次骨骼动画模型
这次我把所有的渲染的位置都放在了同一个点...
帧数居然只有8了...如果说上面两张图的比较结果是像素填充后台缓冲区的填充率过高...
那么这张图又如何来解释呢....ZBUFFER的问题么???

同时...在场景管理中....想优化一下摄像机平截头体和四叉树节点的判断位置关系的代码...
望各位大牛提供一点思路...
posted on 2009-10-14 19:57 G++ 阅读(2030) 评论(4)  编辑 收藏 引用

Feedback

# re: 关于GPU渲染的效率问题[未登录] 2009-10-15 21:19 清风
你有对渲染列表进行排序吗?个人理解,你的第一个问题就是像素填充率导致的,然后第二个问题,不知道你是不是用D3D进行渲染的?D3D默认的z测试方法是当当前像素的Z深度小于或者等于深度缓冲的值时通过测试,你把所有骨骼动画模型都渲染在同一个位置,在默认情况下每个像素都会通过测试进入你的ps程序中进行处理,这样就加重了渲染负担。  回复  更多评论
  

# re: 关于GPU渲染的效率问题 2009-10-16 19:12 G++
@清风
恩,我很同意你的观点,但是如果要说到解决方案的话,你有什么看法...感觉只能通过排序算法来能解决像素级着色问题了吧...顺便还能把ALPHABLEND的问题也一起解决了...呵呵  回复  更多评论
  

# re: 关于GPU渲染的效率问题[未登录] 2009-10-17 14:00 清风
@G++
对渲染队列进行排序,由前向后渲染物体,这是一种基本的优化策略,至于透明物体的排序跟这里的排序解决的不是一个问题,方式也不一样  回复  更多评论
  

# re: 关于GPU渲染的效率问题 2010-07-01 16:11
第一个问题,是否存在Mipmap上的问题?远处的模型在纹理采样和像素填充上会更快。
第二个问题不知作何解释,只是归罪于ZBuffer有点说不过去,你把那200个动态模型放远点试试。  回复  更多评论
  


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