我刚开始在iphone上玩过opengl es,过去几周我正在重构一些代码以使用顶点缓冲区对象(VBO)。在我做之前,尽管我想确保它是值得的。问题是,afaik你创建VBO的唯一原因是将一大块数据转移到显卡上,这样在使用它时不需要从系统RAM中检索。然而,iPhone没有我知道的任何专用内存,所以我很难理解为什么我会从VBO中受益。我看到互联网上的观点互相矛盾,苹果当然希望开发者使用它,所以可能还有一个使用它们的理由,但只是想看看SO上的任何人是否有意见补充。iPhone和顶点缓冲区对象
2
A
回答
1
我没有看到iPhone 3G的性能提升。我向一些维也纳组织提出了一些建议,但最终还是支持了它,因为这使我更难以追求其他的业绩增长。这并不是我期望的快速提升25%的性能。
我读过的地方,它可以在新的硬件(3GS)上有所作为,但我没有提及支持。
0
这取决于。 (抱歉)。
罗布没有看到他的设置有所改善,但here is an interesting post确实看到了很大的改善。
0
VBO存在的主要原因是3D模型中存在静态数据。您遇到的第一个瓶颈是将数据复制到视频内存缓慢(通过使用不可用的glBegin/glEnd块或glVertexPointer,glBufferData和朋友)。
让我们想象一下旧的“飞行烤面包机”屏幕保护程序。所有的吐司都是静态的(只改变位置) - 为什么浪费资源将它们从CPU的内存复制到GPU的每一帧?用缓冲区复制一次,然后用一个命令绘制它。而且,根据动画制作的方式,即使是动画烤面包机也可以静态描述。
我的第一个2D游戏,我开始没有VBO。当我改为维也纳国际组织时,没有区别(像罗布)。但是,当我重构使用更多的静态缓冲区时,FPS从20变为40.因为我的目标是达到30,所以我很满意。我有一些想法可以进行更多的重构,所有东西都是静态的,但我现在没有时间了(游戏正在审核中,下一个将会发布)。
相关问题
- 1. Swizzling顶点数组,顶点缓冲区对象和着色器
- 2. LWJGL/OpenGL顶点缓冲区对象
- 3. 带SDL的顶点缓冲区对象
- 4. 纹理VBOs(顶点缓冲区对象)
- 5. 纹理顶点缓冲区对象
- 6. OpenGL顶点和缓冲区
- 7. iPhone Cheetah 3D OpenGL ES顶点缓冲区对象(VBO)示例
- 8. 使用着色器的顶点缓冲区对象/顶点数组对象
- 9. OpenGL ES 2.0和顶点缓冲区对象(VBO)
- 10. OpenCL中的缓冲区对象和图像缓冲区对象
- 11. 使用顶点缓冲对象与gluPerspective
- 12. 如何使用顶点缓冲对象
- 13. 顶点缓冲区对象不会渲染,其他图元会
- 14. Java OpenGL顶点缓冲区对象不起作用
- 15. OpenGL ES 1.1顶点缓冲区对象不工作
- 16. 顶点缓冲区对象(VBO)中的OutOfMemoryError问题
- 17. 一个简单的顶点缓冲区对象(C++),不渲染
- 18. OpenGL顶点缓冲区对象不显示
- 19. OpenGL的顶点缓冲区对象不起作用
- 20. Qt的帧缓冲区对象不渲染,甚至顶点
- 21. 顶点缓冲区对象 - >分段错误
- 22. OpenGL ES 1.1中的顶点缓冲区对象不工作
- 23. 为什么这个顶点缓冲区对象无法更新?
- 24. JOGL中的顶点缓冲区对象的问题
- 25. 在C++ OpenGL中使用顶点缓冲区对象
- 26. OpenGL 2.1中的顶点缓冲区对象
- 27. 顶点缓冲区对象+纹理每个三角形
- 28. 将纹理应用于顶点缓冲区对象基元
- 29. 顶点缓冲区对象不在SDL窗口中绘制
- 30. pyOpenGL无法创建顶点缓冲区对象