当涉及高度动画的用户界面时,openGL ES 是否比 Core Animation 和 UIKit 具有更好的性能?

2024-02-27

目前,我有一个用户界面,它大量使用了核心动画。我想知道是否值得再花两个月的时间来学习openGL ES?这真的能提高 2D 表面的绘图性能吗?我没有 3D 对象,而是高度动画的 2D 对象。有时会出现 3D 扭曲、大量旋转和缩放。

特别是,我仅使用 CA 制作了一个包含大量精灵的完整游戏。性能还可以,但并不完美。


理论上,OpenGL 应该是设备上最快的 API,因为它最接近硬件。 (如果我在这一点上错了,请有人纠正我。)在OpenGL中,你可以做一些巧妙的技巧,这将对你的性能有很大帮助——你可以批量绘制精灵,你可以使用点精灵,你可以尝试压缩纹理, ETC。

另一方面,您非常接近硬件,并且没有太多抽象,至少与核心动画相比是这样。你必须处理非二次幂的纹理、投影、矩阵,你必须自己编写动画代码等等。有很多地方你可能会出错并严重影响性能而不是使其变得更好。

我喜欢 OpenGL 的一点是它是跨平台的。关于OpenGL的资源有很多,还有很大的改进空间。如果您想编写游戏并且有时间学习 OpenGL,那就去做吧。将 OpenGL 基础知识包装到 OOP 设计中并不难,最终您将获得更多的性能改进空间。一个好的起点是适用于 iPhone 的 Cocos 2D 引擎 http://code.google.com/p/cocos2d-iphone/source/browse/.


(免责声明:我对 OpenGL 知之甚少,对核心动画一无所知。我使用 OpenGL 为 iPhone 编写了两款 2D 游戏。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当涉及高度动画的用户界面时,openGL ES 是否比 Core Animation 和 UIKit 具有更好的性能? 的相关文章

  • 将小箭头添加到 iPhone TableView 单元格中单元格的右侧

    这应该很简单 我有一个带有 TableView 的 iPhone 应用程序 如何将经典的小箭头添加到每个单元格的右侧 只需设置相应的附件类型的财产UITableViewCell cell accessoryType UITableViewC
  • MPMediaItemPropertyAssetURL 仅针对 iPhone 5s 返回 null

    我一直在使用以下代码从 MPMediaItemPickerController 返回的 MPMediaItem 对象中提取资产 url 以便我可以将音乐文件从用户 iPhone itunes 音乐库复制到文档文件夹进行处理 但在 iPhon
  • iPhone OS:从匿名对象获取方法和变量列表

    我正在构建我的第一个 iPhone Obj c 应用程序 并且我有大量的数据保存子类 我将它们传递给引用函数 对于 cite 函数 这些对象是匿名的 我需要找到一种方法来访问每个传递对象的所有变量 我一直在使用预构建的 NSArray 和选
  • 特定时间的 iPhone 本地通知

    我想每周晚上 10 点 无论哪个国家 地区 发出通知 我需要使用时区吗 目前 我使用下面的代码每周触发通知 但如何在晚上 10 点准确触发通知 NSDate date NSDate date NSDate myNewDate date da
  • iOS 4.0 contentScaleFactor 和比例 - 在 3.1.3 中如何处理?

    我的任务是制作一个在 iOS 4 0 中运行的应用程序再次在 3 1 3 和 3 2 中运行 大多数情况下 它很简单 但处理新 API 的扩展和其他必须传递 返回值的情况很困难 respondsToSelector performSelec
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 如何在我的应用程序中添加应用内购买

    我想在我的应用程序中使用应用程序购买应用程序 但我不知道如何执行此操作 任何人都可以帮助我如何做以及源代码在哪里 给我链接或代码 这里有一堆链接 应用内购买编程指南 http developer apple com iphone libra
  • 在 iOS 上的 OpenGL ES 2.0 中创建 16 位亮度纹理

    我的文件中有 16 位数据 我正在尝试将其加载到 iOS 上的 OpenGL 亮度纹理中 如果我手动将 16 位值重新调整为 8 位 我可以按如下方式加载和显示数据 glTexImage2D GL TEXTURE 2D 0 GL LUMIN
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请
  • iPhone - 创建自定义 UITableViewCell 顶部和底部边框

    我一直在到处寻找 但还没有找到我的答案 我使用 JSON 中的动态单元格填充 UITableView 并尝试隐藏任何额外的单元格 我关闭了IB中的分隔符 当然所有的单元格分隔符都消失了 如何在每个 tableviewcell 的底部和顶部添
  • 如何将图像放入此 UIPickerView 中?

    我不知道如何创建一个在文本一侧带有图像的自定义 UIPickerView 我一直在寻找一种方法 我刚刚发现了这个 UIView pickerView UIPickerView pickerView viewForRow NSInteger
  • 将静态库合并为单个

    如何将静态库合并为一个 我确实有三个静态库 libSignatureLibary armv6 a libSignatureLibary armv7 a 和 libSignatureLibary i368 a 现在我想将这三个文件合并到一个库
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 将 NSData 转换回音频文件

    我已经转换了我的 caf音频文件到NSData使用以下代码行对象 NSData audioData NSData dataWithContentsOfFile MyRecorderFilePathURL path options 0 err
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 从应用程序启动 iPhone 设置屏幕?

    我正在开发一个应用程序 我希望按下按钮时 iPhone 设置屏幕应该打开 苹果有访问限制吗 到底能不能 如果能的话怎么办 不 你不能那样做 但是 作为替代方案 您可以使用这个框架 http www inappsettingskit com
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 为什么 json_encode 之后的 JSON.parse 不起作用?

    为什么这对我不起作用 我收到此错误 SyntaxError JSON parse unexpected non whitespace character after JSON data PHP s json encode生成一个字符串 但它
  • Phantomjs 加载页面缓慢

    我是 phantomjs 的新手 正在标准的 centOS 服务器上尝试它 安装了 httpd 等 但除了名称服务器设置为 8 8 8 8 和 8 8 4 4 之外 没有修改设置 我正在使用默认的 loadspeed js 文件 已重命名
  • Azure DevOps Pipeline - dotnet 恢复包内容哈希验证失败

    我在 Azure DevOps 中为我的 Function App 设置了一个构建管道 它利用了 nuget 缓存 从而利用了 package lock json 文件 但是 我不断遇到包验证哈希问题 例如 Package content
  • WCF 位于公共反向代理后面,用于流量加密

    我有一个连接到 WCF 服务的 Silverlight 应用程序 在我习惯的基本配置下 将该应用程序连接到其相应的WCF服务没有问题 然而 最近 我的一位客户开始使用 Apache 反向代理 该代理是公共服务器 仅用于通过 SSL HTTP
  • 自定义 DataGridViewCheckBoxCell 视觉更新在编辑模式下不起作用

    我有以下内容DataGridViewCheckBoxCell 问题是视觉更新不会在编辑模式下立即发生 只有当我退出时才会发生 public class CustomDataGridViewCell DataGridViewCheckBoxC
  • 如何级联软删除?

    检查这些SO文章后 实体框架中的级联删除 https stackoverflow com questions 27293576 cascade delete in entity framework ef6 1 软删除与级联删除 https
  • flutter 中出现错误:widget_test.dart 无法检测到 MyApp()

    作为一个完全的初学者 我正在尝试各种 flutter 功能 但由于 widget test dart 文件中的错误 我陷入了运行 main dart 的困境 如果错误是由于其他原因造成的 请指出 main dart import packa
  • Fontawesome 5 与 VuetifyJs 1.0.0

    我想将 Fontawesome 5 Icons 与 VuetifyJs 一起使用 那可能吗 我应该使用哪个 npm 包来实现 fontawesome 因为没有人为我工作 作为一个没有经验的 VuetifyJs 开发人员 使用它确实让我感到困
  • 合并来自 Raphael svg 的图像

    尝试创造步骤 1 让用户通过 Ajax Raphael 和 Raphael freetransform 上传图像 步骤 2 单击 按钮显示合并上传图像中的一张图像 问题 我发现了关于转换 Raphael svg 的类似帖子1 https s
  • 出现导入错误:安装 auto-sklearn 时没有名为“sklearn”的模块

    为什么我得到ImportError No module named sklearn 安装时auto sklearn通过点 virtualenv p python3 automl cd automl source bin activate p
  • 如何从 C 读取 python pickle 数据库/文件?

    我正在努力与几个音乐播放器集成 目前我最喜欢的是 exexile 在新版本中 他们将数据库格式从 SQLite3 迁移到内部 Pickle 格式 我想知道是否有一种方法可以访问 pickle 格式文件 而无需手动对格式进行逆向工程 我知道有
  • 如何在 Blazor 中实现拖放?

    我知道 Blazor 是一项新技术 当前版本为 v0 5 1 不过 我目前正在为一个新的 Web 应用程序实现 PoC 我们希望在应用程序中具有拖放功能 我尝试以 Blazor 方式实现它 但它不起作用 我的放置目标 div class c
  • 将 YAML 反序列化为自定义类型

    我目前正在尝试将 YAML 文档反序列化为标准 NET 对象 例如string对于标量值和Dictionary
  • 在 CURL 中使用 cookie jar 时如何注入 cookie?

    我正在使用 php curl 并使用 cookie jar 进行多步抓取 我需要从服务器动态生成的cookie 但在某一步骤中 一些 cookie 是使用 JavaScript 生成的 由于curl不运行javascript 因此我需要在此
  • 分段寄存器的使用

    我试图了解内存管理如何在低水平上进行 并有几个问题 1 Kip R Irvine 写的一本关于汇编语言的书说 在实模式下 程序启动时前三个段寄存器会加载代码 数据和堆栈段的基地址 这对我来说有点模棱两可 这些值是手动指定的还是汇编器生成指令
  • 永远不会执行的 cron 作业

    有没有办法创建一个 cron 表达式来根本不运行作业 我想使用这个表达 0 0 0 1 1 3099 这实际上可以完成这项工作 因为它将在 3099 年运行 但是有没有更干净的方法来完成它 如果您即使在遥远的将来仍在寻找强大的东西 请尝试h
  • 如何修改 Elastic Beanstalk AWS 上的 NGINX 路由?

    所以我有一个very与将 Elixir 应用程序部署到 Elastic Beanstalk 相关的长篇文章 此处 HTTP 500 将 Elixir Phoenix 部署到 AWS Elastic Beanstalk https stack
  • 如何在 Google Cloud Console 的同意屏幕上更改电子邮件帐户?

    我被困住了 我创建这个应用程序已经有一段时间了 那时我只是使用我的帐户 现在 我想向用户提供与系统支持电子邮件相对应的不同电子邮件 有办法改变吗 更新 请参阅我的评论 这全都是关于现在登录用户 没有别的 为了更改与您的项目关联的电子邮件 您
  • 如何在.NET 4.5 Core中计算HMAC-SHA1身份验证代码

    我目前面临一个大问题 环境 NET 4 5 Core 我们需要使用 HMAC SHA1 算法通过密钥来保护消息 问题是命名空间的 HMACSHA1 类System Security Cryptography并且命名空间本身并不存在于 NET
  • 当涉及高度动画的用户界面时,openGL ES 是否比 Core Animation 和 UIKit 具有更好的性能?

    目前 我有一个用户界面 它大量使用了核心动画 我想知道是否值得再花两个月的时间来学习openGL ES 这真的能提高 2D 表面的绘图性能吗 我没有 3D 对象 而是高度动画的 2D 对象 有时会出现 3D 扭曲 大量旋转和缩放 特别是 我