我是桌面GL开发人员,我开始探索移动世界。共享内存体系结构中的OpenGL(ES 2.0)VBO性能
为了避免误解或者欢迎而琐碎的回复,我可以虚心地说,我非常了解GL和GL | ES机器。
简而言之,如果我们在共享内存架构中使用GL | ES 2.0,使用VBOs对客户端阵列使用背后的意义何在?
更详细地说:
- 是记忆原始块,司机无法以任何方式,因为访问模式取决于优化任何
顶点缓冲器:1)如何在应用配置顶点数据布局,2)顶点着色器如何消耗缓冲区内容,以及3)我们可以有许多以不同方式操作的顶点着色器,并且使用相同的缓冲区。
对齐方式:单个VBO存储可以在对底层GL系统最优的地址开始;如果我只是强迫(例如,尊重对齐最佳实践)客户端数组分配到这些边界?
基于瓦片的渲染与即时模式架构不应该发挥作用:据我的理解,这与我的问题(即内存访问)无关。
据我所知,使用维也纳组织可以有你的代码运行更好/更快未来平台/硬件,而无需修改它,但这不是这个问题的重点。除此之外,我还认识到,在共享内存架构中使用VBO会使内存使用量翻倍(如果由于某种原因,您必须保持顶点数据的可用性),并且这会花费您一笔数据。
与交错顶点阵列一样,VBO的使用在开发者论坛/博客/官方技术文档中有一个很大的“炒作”,没有任何数据支持这些语句(即基准)。
- VBO在共享内存架构上的使用是否值得?
- 客户端阵列工作正常吗?
- 您对此有何评论?
非常感谢您分享这些成果。最后,这对于性能的观点来说很重要。无论如何,我无法解释自己如何在一个共享的内存GPU中提倡VBO的使用,我想这仅仅是为了市场营销,或者是为了让那些对GL良好实践相对陌生的人“准备好”目前来说,最好不要使用它们,因为如果你仍然需要CPU侧的存储器,并且由于不可避免的复制操作,潜在的存储器翻倍)。 – spattija