OpenGL ES 真的那么快吗?为什么?与在 Quartz 2D 中绘制这些简单的东西相比,在 OpenGL ES 中绘制如此简单的东西真的那么复杂吗?
例如,我有一个实现了 -drawRect: 的 UIView 子类,我在其中绘制了一些直线、曲线和圆。只是简单的路径,带有一些阴影。
我会在 OpenGL ES 中做什么?不是有这个漂亮的 EAGLView 图层吗?我想到的一件事是触摸事件如何进入 OpenGL ES?也许这就是事情的复杂之处?有关于 OpenGL ES 中基本绘图操作的教程吗?
基于你之前的问题,我假设您想要切换到 OpenGL 的原因是为了加速绘制元素的动画。在这个问题中,您尝试通过每帧用 Quartz 重绘 UIView 的内容来制作动画。由于 iPhone 绘图系统的工作方式,这将非常慢。每一帧,视图的支持层都需要转换为纹理并重新上传到 GPU,这是一组非常慢的操作。
正如已经指出的那样,为此采用纯 OpenGL ES 的方式将花费大量的时间和精力,除非您愿意使用像这样的第三方框架Cocos2D。即便如此,我打赌您会发现绘制复杂的 2-D 元素与使用 Quartz 一样困难,甚至更难。
相反,我的建议是不要尝试通过在 Quartz 中重新绘制每一帧来对内容进行动画处理,而是通过对绘图进行分层并使用 Core Animation 来移动这些层。即使在最初的 iPhone OS 设备上,我发现我也可以使用 Core Animation 以每秒 60 帧的速度制作 50 个半透明层的动画。使用 Quartz 进行绘图的 Core Animation 比 OpenGL ES 更容易使用,并且如果操作得当,可以让您达到接近相同水平的性能。相信我,我都用过。
即使您需要在矢量元素改变形状时对其进行动画处理,您也可以使用类似的东西CAShape层为您处理该动画。
也可以看看我的答案 to 这个问题。有关核心动画入门的资源,请参阅我的答案here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)