之前因为要用到NVPerfHud,所以装的是78.01的driver
然后结果即像提到的那样,不管如何优化,vbo相比var,fps总会掉近1/5
怎么试都是一样,情况不像想象中那么简单: 应该会和D3D中VB的lock/unlock一样吧(<--- 天真)

最后看到有人说nvidia和ati的实现不一样,nvidia有做MRU之类的优化,ati则在处理STATIC_DRAW会简单得video memory > AGP memory > system memory,最重要的是OpenGL是依赖于driver的
所以去下了个最新的81.98装上
结果发现差距没有了,晕~

结论:
        1.  因为目前ogl的驱动已经很成熟的情况下,一些过去的Efficient方法,现在并不一定实用了:像是说带Range的比普通DrawElements要快一说
        2.  var是system memory级,在draw时会copy到AGP或Video的memory中;而vbo会由client指定由driver决定将data放在哪,通常会放在“比较合适”的地方
        3.  vbo在create和lock时要注意,类似D3D的VB在使用中要注意的:WRITE_ONLY、DISCARD、NOOVERWRITE,这些flag的使用,会很大程度上影响到效率,以下是说明
                非WRITE_ONLY的数据,即会READ,而我们知道Video memory在READ起来是很慢的
                在lock住VB写数据时,DISCARD会告诉driver,不需要等待GPU的同步,因为不需要之前旧的数据
                在lock住VB写数据时,NOOVERWRITE会告诉driver,不需要等待GPU的同步,因为不会影响到已有的数据
        4.  vbo适合static buffer,这时通常会比var快近一倍;而dynamic buffer,就目前来看,至少OpenGL在nvidia的drvier实现中差别不大
        5.  vbo是存在有“最佳传输量”的,在不同的显卡上,其“最佳数据量/fps影响”也不同,有人做了专门的benchmark

PS,以上乱说一气,保持了一直以来的记流水帐的风格,见谅见谅~
posted on 2006-02-13 10:25 千里马肝 阅读(213) 评论(0)  编辑 收藏

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印
 


<2006年2月>
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

与我联系

常用链接

留言簿(33)

我参与的团队

我的标签

随笔档案(295)

文章档案(1)

好友

搜索

  •  

最新评论

阅读排行榜

评论排行榜

60天内阅读排行