Luk*_*asz 1 iphone opengl-es uiscrollview uikit
我需要做出如何处理需要在图像纹理上渲染少量3D对象的应用程序的设计决策.结果需要呈现并保存为UIImage.图形设计(客户端)期望标准UIKit控件操纵3D世界.
OpenGL视图(CAEAGLLayer层)需要在UIScrollView内部进行廉价和自然的滚动和缩放实现.只有很少的额外控制来操纵旋转比例和几个3D对象的过渡.预期的三角形数量不多(最多100-200个)和2-3个纹理(1个模板).它甚至不必经常刷新,只是在某些变换和缩放发生变化时.CAEAGLLayer不需要是不透明的.
我会选择Core Animation解决方案,但不支持将3D转换的CALayers渲染为CGContextRef(也不支持屏蔽).
将CAEAGLLayer放入UIScrollView并将其与少量UIKit视图混合时,实际性能成本是多少?我可以期望以平滑的帧速率(每秒30fps)呈现每秒多少三角形,这样我可以做出最好的决定吗?
我知道已有类似的问题,但没有一个答案提供具体的数字,这可能有助于估计预期的渲染结果.
Per Allan Schaffer为WWDC和WWDC提供OpenGL演讲,OpenGL本身并不是一个特殊情况 - 任何改变都会导致其上的所有内容被重新编译.我特意谈到了一个在实时更新的OpenGL视图下面有一个实时更新视频视图的应用程序,他说那种事情是病态最坏的情况.在顶部抛出一些非常静态的视图通常并不昂贵,例如使用a UILabel来显示OpenGL游戏的当前分数.
在你的情况下,我认为你可以在很大程度上避免这个问题.不要将GL视图放在滚动视图中,而是使滚动视图不透明并将GL视图放在其后面.捕获scrollViewDidScroll:(以及相应的缩放消息)并进行相关的OpenGL调整.我可以从经验中说出来并说我已经在iPad 1上做到了这一点而没有性能问题.特别是对于你所说的那种模型,我没想到会出现问题.
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |