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

2023-12-11

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(使用前将#替换为@)

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

  • 如何有效地将图像从服务器加载到tableView?

    我有一个表格视图 其中所有单元格都有 UITableViewCellStyleSubtitle 所有细胞的图像均从服务器获取 然而 这些图像并不经常改变 有人可以告诉我如何改善用户体验吗 每次用户向下滚动表格时 就好像它再次上网检查和下载图
  • 核心数据的标准化或规范化字符串?

    我观看了一些有关 Core Data 的 WWDC 视频 并计划维护规范化的文本属性 假设我有以下数据 originalString normalizedString lowercase nsker onsker onsker onsker
  • 其他用户之间的 iCloud 共享 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 据我所知 iCloud 就像个人存储 您可以使用自己的 Apple ID 我想问的是 用户是否可以存储例如图像并与其他用户共享 这意味着类
  • iPhone:两个 RootViewController 之间的淡入淡出过渡

    Obj C or MonoTouch C 答案很好 初始 UIWindow 的 RootViewController 是一个简单的登录屏幕 window RootViewController loginScreen 登录后 我将根设置为主应
  • iOS:从相机获取逐像素数据

    我知道 AVFoundation 及其捕获支持 虽然不太熟悉 但是 我没有看到任何易于访问的 API 来获取逐像素数据 每像素 RGB 或类似数据 我确实记得在文档中读过这是可能的 但我真的不明白如何做到 所以 这可以做到吗 如果是这样 怎
  • iphone MPMoviePlayerViewController CGContext 错误

    我正在为 iPhone 编写一个应用程序 可以使用它来播放一些电影MPMoviePlayerViewController 到目前为止 我已经让它可以播放电影了 但是它在调试器中抛出了一些错误 这些错误都以CGContext 我绞尽脑汁试图修
  • iPhone 版 Twitter 书签如何工作?

    Twitter 客户端 以前称为 Tweetie 允许您在 Safari 中定义启动应用程序的书签 我想知道哪个 iPhone API 允许您注册协议说明符 或任何名称 在本例中为 tweetie 以便此小书签正常工作 可以找到说明here
  • iPhone - 来自本地文件 URL 的 NSData

    我有一个NSURL对象 它为我提供本地文件的路径 在文档文件夹中 我想填充一个NSData包含此文件内容的对象 尝试使用dataWithContentsOfURL 但这失败了 我知道该文件存在 因为 iPhoneSDK返回路径 有人可以告诉
  • OpenGL ES 2.0 PNG Alpha 通道

    我刚刚学习使用适用于 Android 的 OpenGL ES 2 0 我一直在尝试简单地在屏幕中间显示纹理 这很简单 但我似乎无法让 PNG alpha 正常工作 图像要么以黑色背景显示 要么整个图像将稍微混合到背景颜色中 具体取决于我使用
  • Objective C iPhone 何时将对象引用设置为 nil

    我使用 Objective C 和 Cocoa 框架进行开发已经有一段时间了 然而 我仍然不太清楚 我什么时候应该将对象引用设置为 nil 我知道建议在释放具有委托的对象之前执行此操作 并且您还应该在保留子视图的 viewDidUnload
  • 如何消除错误 服务无效 请检查您的设置并尝试

    我一直在努力工作 一切都很顺利 只是突然间 当我尝试构建我的项目时 我在 xCode 中收到以下错误 1 在构建时的警报框中 服务无效 请检查您的设置并重试 0xE8000022 只需重新启动您的 iPod 或 iPhone 即可
  • 现有 UIPopoverController 中的 UIImagePickerController

    有没有办法将 UIImagePickerController 推送到现有 UIPopoverController 的导航控制器中 我所知道的是 您必须创建一个新的弹出窗口并在其中添加 UIImagePickerController 但我有一
  • 纹理映射和光照顶点着色器错误 Java OpenGL

    我正在尝试将纹理映射到 3D 立方体并尝试编写着色器以使其具有照明和纹理 我尝试过只编写纹理着色器并且它有效 我还尝试过仅将 3D 值设置为红色的照明着色器 并且该照明着色器也可以工作 但当我尝试将两者结合起来时 我遇到了问题 我在下面提供
  • 如何为带有标题图像的移动设备设置 HTML,该图像占据浏览器的整个宽度?

    我担心的是我必须为移动设备建立一个网站 概念中是将图像设置为标题 现在的问题是 不同的智能手机具有不同的显示分辨率 有例如840x560 480x320 或 800x480 我必须编写什么元标签 CSS 等才能使 每个 现代智能手机中的图像
  • 将用户重定向到 iTunes 应用商店或 Google Play 商店?

    我正在寻找一种简单的解决方案来发布我的应用程序的一个链接 例如在 Facebook 上 如果用户使用移动设备访问它 它应该自动重定向到正确的应用程序商店 否则 用户应该被重定向到我的网站 iOS应用程序 http itunes apple
  • 当点击 UITableViewCell 的子视图时引发选择事件 (didSelectRowAtIndexPath)

    我创建了一个自定义 UITableViewCell 其中包含许多子视图 在大多数情况下 我希望 UITableViewCell 的控制器来处理事件 在一种情况下 我希望子视图简单地将事件传递给父 UITableViewCell 这将导致它在
  • 处理 NSPropertyListSerialization 中的 CFNull 对象

    在我的应用程序中 我尝试序列化服务器响应字典并将其写入文件系统 但对于某些响应 我收到错误 属性列表格式无效 原因是服务器响应中的 CFNull 对象 现在 服务器响应将不断变化 因此我没有明确的方法来删除 CFNull 对象 下面是我的代
  • 未安装的应用程序的URL方案

    简单的问题 我正在开发一个将注册自己的 URL 方案的应用程序 我计划通过人们最喜欢的 QRCode 阅读器使用 QRCode 启动该应用程序 我的问题 如果我的应用程序尚未安装在他们的 iPhone iPad 上 会发生什么 他们会被引导
  • iPhone PhoneGap 电子邮件编辑器 SECURITY_ERR:DOM 异常 18 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用phonegap 中的 i
  • 如何获取 UITableView 内容视图的大小?

    我想在填充表格时获取 UITableView 内容视图的大小 关于如何执行此操作有什么建议吗 Allows you to perform layout before the drawing cycle happens layoutIfNee

随机推荐

  • ADB服务器无法启动android

    我已经安装了 adt 捆绑包 eclipse 但是 我似乎无法运行 AVD 我有问题 ADB server didn t ACK failed to start daemon 我已经搜索了如何解决它 我已经阅读并输入adb kill ser
  • 将 Excel 导入 Panda Dataframe

    以下只是 Coursera 数据科学作业的开始 我希望这不是一件小事 但我对此迷失了方向 找不到答案 我被要求将 Excelfile 导入 panda 数据框并随后对其进行操作 该文件可以在这里找到 http unstats un org
  • Makefile 的运行方式与 shell 命令不同? (使用猫时)

    我正在尝试将手动运行的命令转换为 Makefile 目标 但出现与我的使用相关的错误cat 我想我正在尝试打开文件 cat 而不是cat ing 实际文件 queries sql clean ls sql sql sort V while
  • 捕获所选 UI 菜单选项的名称

    我正在尝试将条目添加到 Google 表格的菜单中 ui createMenu Push to Sheet addItem Texas menuItem addItem Illinois menuItem addToUi 在回调函数中men
  • 新日期的日期无效("YYYY-MM-DDThh:mm:ss");实例化

    我正在使用 Titan 它是一个基于 JavaScript 的移动开发框架 我有一个数组 其中的单元格中包含一个表示 YYYY MM DD HH mm ss 格式的 日期和时间 字符串的字符串 NightsArray i 3 返回 2014
  • Hibernate 5 序列生成问题

    我正在从 3 迁移到 hibernate 5 我发现序列生成器在 Hibernate 5 中无法正常工作 我用最小值 1000 定义了序列并递增 1 但是当我尝试创建新的实体记录时 我看到插入的记录的 id 为 951 看起来 id 与实际
  • 将列表编组为 XML 是可行的 - 但如何解组呢?

    我可以使用 Wrapper 类来编组 ObservableList 如下所示 但我无法将其解组回之前的包装类 这个想法是 我有一个 费用 的可观察列表 我将此列表放入包装类中 并将该类保存为 XML 结果如下
  • FCM 主题限制以及旧的未使用主题的过期/失效?

    我使用 FCM 主题已经有一段时间了 但文档非常有限 大多数搜索都会指向相同的页面 所以我在这里询问 希望有人在该主题上有足够的经验来回答我的问题 我想知道允许的主题数量是否有限制以及不再使用的主题会怎样 我的意思是 什么时候主题会无效 我
  • IBM Worklight 6.1 - 项目无法初始化,因为项目数据库模式来自 N/A 版本

    当我尝试将 war 文件部署到应用程序服务器时 收到以下错误消息 错误 500 javax servlet ServletException Worklight 控制台 初始化失败 记录的异常 java lang RuntimeExcept
  • strsplit 和 lapply

    我在表单的某些文本中有一个字符串 12 34 77 包括引号 我需要将每个数字的值放入列表中 我尝试使用lapply and strsplit control2 lapply strsplit data values as numeric
  • 从 aria-label selenium webdriver 中提取文本 (python)

    现在我正在开发一个程序 该程序接受用户输入的问题和答案 将它们分成单独的 q 和 a 列表 然后根据问题或答案自动回答问题 由于使用 机器人 的地方是在线的 我使用的是 Selenium Web 驱动程序 这在尝试读取 aria 标签时给我
  • 是否可以使用图像代替 SVG 路径的笔画?

    首先 我知道这个问题是very如同this问题 但我尝试用一 个来实现该解决方案SVG PATH但它不起作用 我还知道另一种解决方案是循环PATH并设置FILL of the PATH如上所述here以及网络上的其他地方 不过 我已经动画化
  • 在 Angularjs 中使用 GeoChart

    如何在 Angular 中使用 Google GeoChart 我想在 geoChart 中注入角度数据 就像 Javascript 中的示例一样https developers google com chart interactive d
  • 获取由向量组成的矩阵表示的矩阵的第一列

    假设我代表一个矩阵foo值使用std vector int rows 5 int cols 10 auto foo vector
  • 使用flask_security时,flask_sqlalchemy对象没有添加属性

    我正在尝试使用flask security添加一些角色 用户 但是当我尝试使用以下命令创建用户时遇到了这个问题SQLAlchemySessionUserDatastore 所以我首先从创建开始user datastore像guide db
  • 模式也与连字符匹配

    我有一段像这样的 Perl 代码 模式匹配 var
  • 如何在 MacBook 上使用并行命令来利用多核并行性?

    我经常使用findLinux 和 macOS 上的命令 我刚刚发现了这个命令parallel 我想将它与find如果可能的话命令因为find当我们在大目录中搜索特定文件时 命令需要很长时间 我搜索过这些信息 但结果不够准确 似乎有很多可能的
  • 让 Facebook 好友参加活动?

    我如何才能看到我的哪些朋友参加了 Facebook 活动 我可以使用 Facebook SDK 获取所有与会者的列表 其中 GraphPath eventId attending 使用 Graph API 是否可以实现我想要的功能 我阅读了
  • 导航栏与状态栏重叠

    我面临一个非常奇怪的问题iOS 6 0 iOS 6 0 1 每当我从任何视图控制器呈现模态视图然后关闭该模态视图时 父视图控制器的导航栏 从我呈现模态视图的位置 就会与状态栏重叠 这运行良好iOS 6 0 iOS 6 1模拟器 但在设备上它
  • 在 OpenGL ES 中绘制简单的曲线、直线和圆比在 Quartz 2D 中复杂多少?

    OpenGL ES 真的那么快吗 为什么 与在 Quartz 2D 中绘制这些简单的东西相比 在 OpenGL ES 中绘制如此简单的东西真的那么复杂吗 例如 我有一个实现了 drawRect 的 UIView 子类 我在其中绘制了一些直线