OpenGL ES真的那么快吗?为什么?与在Quartz 2D中绘制这些东西相比,在OpenGL ES中绘制如此简单的东西真是太可怕了吗?
例如,我有一个带-drawRect的UIView子类:已实现,我绘制了一些线条,曲线和圆圈.只是简单的路径,有一些阴影.
我在OpenGL ES中会怎么做?是不是有这个漂亮的EAGLView图层的东西?我想到的一件事是触摸事件如何进入OpenGL ES?也许这是关于它的复杂事情?是否有关于OpenGL ES中基本绘图操作的教程?
根据您之前的问题,我假设您要切换到OpenGL的原因是为了加速绘制元素的动画.在那个问题中,你试图通过每帧用Quartz重绘UIView的内容来制作动画.由于iPhone绘图系统的工作方式,这将非常慢.每一帧,您的视图的背景层都需要转换为纹理并重新上传到GPU,这是一组非常缓慢的操作.
正如已经指出的那样,除非你愿意使用像Cocos2D这样的第三方框架,否则采用纯OpenGL ES的方式需要花费大量的时间和精力.即便如此,我敢打赌,你会发现绘制复杂的二维元素要比使用Quartz更难或更难.
相反,我的建议是不要尝试通过在Quartz中每帧重新绘制动画来制作动画,而是通过分层绘图并使用Core Animation来移动这些图层.即使在最初的iPhone OS设备上,我发现我可以使用Core Animation以每秒60帧的速度为50个半透明层设置动画.使用Quartz进行绘图的Core Animation比OpenGL ES更容易使用,并且如果正确完成,可以让您达到接近相同级别的性能.相信我,我已经用过了.
即使您需要在更改形状时为矢量元素设置动画,也可以使用类似CAShapeLayer的内容来为您处理该动画.
另见我对这个问题的回答.如需入门与核心动画资源,请参阅我的答案在这里.
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |