2010-05-03 175 views
2

我刚开始在iphone上玩过opengl es,过去几周我正在重构一些代码以使用顶点缓冲区对象(VBO)。在我做之前,尽管我想确保它是值得的。问题是,afaik你创建VBO的唯一原因是将一大块数据转移到显卡上,这样在使用它时不需要从系统RAM中检索。然而,iPhone没有我知道的任何专用内存,所以我很难理解为什么我会从VBO中受益。我看到互联网上的观点互相矛盾,苹果当然希望开发者使用它,所以可能还有一个使用它们的理由,但只是想看看SO上的任何人是否有意见补充。iPhone和顶点缓冲区对象

回答

1

我没有看到iPhone 3G的性能提升。我向一些维也纳组织提出了一些建议,但最终还是支持了它,因为这使我更难以追求其他的业绩增长。这并不是我期望的快速提升25%的性能。

我读过的地方,它可以在新的硬件(3GS)上有所作为,但我没有提及支持。

0

VBO存在的主要原因是3D模型中存在静态数据。您遇到的第一个瓶颈是将数据复制到视频内存缓慢(通过使用不可用的glBegin/glEnd块或glVertexPointer,glBufferData和朋友)。

让我们想象一下旧的“飞行烤面包机”屏幕保护程序。所有的吐司都是静态的(只改变位置) - 为什么浪费资源将它们从CPU的内存复制到GPU的每一帧?用缓冲区复制一次,然后用一个命令绘制它。而且,根据动画制作的方式,即使是动画烤面包机也可以静态描述。

我的第一个2D游戏,我开始没有VBO。当我改为维也纳国际组织时,没有区别(像罗布)。但是,当我重构使用更多的静态缓冲区时,FPS从20变为40.因为我的目标是达到30,所以我很满意。我有一些想法可以进行更多的重构,所有东西都是静态的,但我现在没有时间了(游戏正在审核中,下一个将会发布)。

相关问题