我希望在我的 iPhone 应用程序上获得一些额外的性能 (FPS) 提升。我已经在使用交错数据、GL_SHORT 和单个纹理图集。有关我已经完成的操作的详细信息,请参阅此问题。
现在我想看看使用 VBO 来提高性能。根据 Apple 的 OpenGL ES 文档,这是一个很好的步骤。但是,它没有说明 VBO 如何(或是否)受到模型视图矩阵更改的影响。本质上,我将同一个对象多次渲染到场景中,但每次都使用稍微不同的模型视图矩阵。对象之间的主要区别(场景中的位置除外)是纹理映射。它们都有略微不同的纹理坐标。
VBO 会在这种情况下提供帮助吗?我应该为每个单独的对象分配一个单独的 VBO 吗?
更新 1
到目前为止,VBO 似乎对我的表现有负面影响。FPS 回落到 20 年代中期到高 20 年代。我分配了 70 个 VBO:35 个用于数据,35 个用于索引。我可以将数据和一个全局索引数组降低到 35 个。我正在使用 glBufferSubData() 根据需要更新纹理坐标。
另一个想法是分解所有静态数据并为该 VBO 指定 GL_STATIC_DRAW。