共享存储器体系结构中的OpenGL(ES 2.0)VBO性能



我是桌面GL开发人员,我开始探索移动世界。

避免误解或受到欢迎而琐事的答复,我可以谦虚地说我很清楚GL和GL | ES机械。

简短的问题是:如果我们在共享内存体系结构中使用GL | ES 2.0,使用VBO在客户端数组中使用的重点是什么?

更多详细:

  • 顶点缓冲区是原始内存块,驱动程序不能以任何方式优化任何内容,因为访问模式取决于:1)应用程序如何配置顶点数据布局,2)Vertex着色器消耗缓冲含量,3)我们可以以不同的方式运行许多顶点着色器,并以不同的方式采购相同的缓冲区。

  • 对齐:单独的VBO存储可以从最佳的地址开始,该地址对基础GL系统是最佳的;如果我只是强迫(例如,尊重对齐方式的最佳实践)客户端阵列分配给这些边界怎么办?

  • 基于瓷砖的渲染与即时模式架构不应发挥作用:据我所知,这与我的问题无关(即,内存访问)。

我了解,使用VBO可以使您的代码在 Future Platform/Hardware中更快/更快地运行,而无需修改它,但这不是此问题的重点。

旁边,我还意识到,在共享内存体系结构中使用VBO会加倍内存使用(如果您出于某种原因必须保留顶点数据),并且它使您付出了一个数据。

与交错的顶点阵列一样,VBO使用情况在开发人员论坛/blogs/官方_technotes中具有出色的"炒作",而没有任何支持这些语句的数据(即基准测试)。

  • VBO的使用值得在共享内存体系结构上吗?
  • 客户端阵列工作正常吗?
  • 您对此有何看法/了解?

我可以报告说,使用VBO在Android设备上存储顶点数据可以使我的性能改进为零。在Adreno,Mali400和PowerVR GPU上尝试了它。但是,我们使用VBO,考虑到这是OpenGles。

的最佳实践

您可以在我们的文章( vertex buffer对象段落)中找到有关此的注释。

根据本报告,即使持有SMA常数,也取决于OpenGL实现(某些VBO工作是在CPU上秘密完成的)和VBOS的大小:

http://sarofax.wordpress.com/2011/07/10/vbo-vertex-buffer-object-limitations-on-ios-devices/

我会告诉你,我对iOS平台的了解。VBO确实提高了您的性能。

  1. vbo是完美的,如果您有静态几何形状 - 一旦复制,则每次绘制通话都不会额外开销。CA会将您的数据从客户存储器复制到每个抽奖活动的" GPU内存"。如果您忘记了数据,它可能会重新调整。
  2. vbo可以映射到gpu vie glmapbuffer-这是一个异步操作,意思是,它几乎没有开销,但是您应该记住 - 当您映射删除缓冲液时,最好在UNMAP操作后使用2帧, - 避免同步
  3. 苹果工程师宣称,即使您在每个帧中都可以重新上传vbo,VBO的性能将比CA上的CA更好 - 我不知道详细信息。
  4. VBO是最佳实践。CA被弃用。最好与现代趋势保持同步,并尽可能多地保持跨平台

最新更新