• 关于之前提到vbo速度的问题


    之前因为要用到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,以上乱说一气,保持了一直以来的记流水帐的风格,见谅见谅~
  • 相关阅读:
    BZOJ1045 [HAOI2008]糖果传递 && BZOJ3293 [Cqoi2011]分金币
    [BZOJ1103][POI2007]大都市meg dfs序+树状数组
    [BZOJ1122][POI2008]账本BBB 单调队列+后缀和
    [BZOJ1131][POI2008]Sta
    [BZOJ1370][Baltic2003]Gang团伙 并查集+拆点
    网易云基于 Kubernetes 的深度定制化实践
    微服务化的基石——持续集成
    微服务的接入层设计与动静资源隔离
    从互联网+角度看云计算的现状与未来(2)
    从互联网+角度看云计算的现状与未来(1)
  • 原文地址:https://www.cnblogs.com/oiramario/p/329518.html
Copyright © 2020-2023  润新知