gpt4 book ai didi

iphone - 在 2D 场景上创建 "magnifying glass"的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 20:39:23 25 4
gpt4 key购买 nike

我正在开发一款游戏,需要让玩家通过镜头(例如放大镜)观察平面(例如墙壁)。游戏是在iPhone上运行的,所以我的选择是Core Animation或OpenGL ES。

我的第一个想法(我还没有尝试过)是使用核心动画来做到这一点。

  1. 使用 CALayers 创建墙壁及其上的对象。
  2. 使用 CALayer 的 renderInContext: 方法创建墙壁图像作为背景层。
  3. 将图像裁剪为镜头形状,将其放大,然后将其绘制在背景上。
  4. 在其上绘制镜头框架和“ Shiny 玻璃”层。

注释:

  • 我对 Core Animation 比 OpenGL 更熟悉,所以也许有更好的方法来使用 OpenGL 来做到这一点。 (请告诉我!)
  • 如果我使用未附加到 View 的 CALayers,我是否必须自己管理所有动画?或者有没有一种直接的方法来手动运行它们?
  • 3D 视角并不重要;我只是放大一面平坦的墙。
  • 我担心执行上述所有操作对于流畅的动画来说会太慢。

在我提交大量代码来编写此内容之前,我的问题是您是否发现上述计划中存在任何陷阱,或者您能否推荐一种更简单的方法来实现此目的?

最佳答案

我使用 UIView 在 iPhone 上实现了放大镜。 CA 太慢了。

你可以使用它的drawRect方法将CGImage绘制到UIView中。这是我的绘制矩形中的步骤:

  1. 获取当前上下文
  2. 创建用于剪切 View 的路径(圆形)
  3. 缩放当前变换矩阵 (CTM)
  4. 移动当前变换矩阵
  5. 绘制 CG 图像

您可以预渲染 CGImage,然后将其存储在图形内存中。如果您想要动态的东西,请从头开始绘制它,而不是绘制 CGImage。

非常快,看起来很棒。

关于iphone - 在 2D 场景上创建 "magnifying glass"的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164743/

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