gpt4 book ai didi

iphone - 在 OpenGL ES 中绘制简单的曲线、直线和圆比在 Quartz 2D 中复杂多少?

转载 作者:行者123 更新时间:2023-12-03 20:19:18 30 4
gpt4 key购买 nike

OpenGL ES 真的那么快吗?为什么?与在 Quartz 2D 中绘制这些简单的东西相比,在 OpenGL ES 中绘制如此简单的东西真的那么复杂吗?

例如,我有一个 UIView 子类,其中实现了 -drawRect: ,我在其中绘制一些直线、曲线和圆。只是简单的路径,带有一些阴影。

我会在 OpenGL ES 中做什么?不是有这个漂亮的 EAGLView 图层吗?我想到的一件事是触摸事件如何进入 OpenGL ES?也许这就是事情的复杂之处?有关于 OpenGL ES 中基本绘图操作的教程吗?

最佳答案

基于your earlier question ,我假设您想要切换到 OpenGL 的原因是为了加速绘制元素的动画。在这个问题中,您尝试通过每帧用 Quartz 重新绘制 UIView 的内容来制作动画。由于 iPhone 绘图系统的工作方式,这将非常慢。每一帧, View 的支持层都需要转换为纹理并重新上传到 GPU,这是一组非常慢的操作。

正如已经指出的那样,为此采用纯 OpenGL ES 的方式将花费大量的时间和精力,除非您愿意使用像 Cocos2D 这样的第三方框架。 。即便如此,我打赌您会发现绘制复杂的 2-D 元素与使用 Quartz 一样困难,甚至更难。

相反,我的建议是不要尝试通过在 Quartz 中重新绘制每一帧来对内容进行动画处理,而是通过对绘图进行分层并使用 Core Animation 来移动这些图层。即使在最初的 iPhone OS 设备上,我发现我也可以使用 Core Animation 以每秒 60 帧的速度制作 50 个半透明层的动画。使用 Quartz 进行绘图的 Core Animation 比 OpenGL ES 更容易使用,并且如果操作得当,可以让您实现接近相同水平的性能。相信我,我都用过。

即使您需要在矢量元素改变形状时对其进行动画处理,您也可以使用类似 CAShapeLayer 的内容。为您处理该动画。

另请参阅my answerthis question 。有关 Core Animation 入门的资源,请参阅我的回答 here .

关于iphone - 在 OpenGL ES 中绘制简单的曲线、直线和圆比在 Quartz 2D 中复杂多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2720804/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com