首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CAEAGLLayer (iOS)的子集上使用affineTransform?

如何在CAEAGLLayer (iOS)的子集上使用affineTransform?
EN

Stack Overflow用户
提问于 2015-11-13 12:34:58
回答 1查看 72关注 0票数 0

我正在玩Open GL和核心动画,并且已经能够在开放的GL层上做仿射变换,一切都很棒。寻找关于如何变换层的子集的帮助,这意味着上半部分或下四分之一,只旋转这些像素,而保持层的其余部分不变。

或者,如果我有1个openGL层,是否可以将其分成2个(顶部和底部部分)。然后,我可以根据需要执行转换。我不能访问层中的子视图,只能访问整个层。

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-11-13 15:37:27

要在视图管道中执行此操作,您需要多个视图。一般来说,这没有什么错,但您需要做一些工作来绘制每个视图,使其看起来像是一个整体。如果使用标准投影矩阵(如glOrtho ),则只需根据视图拆分来拆分边界参数(顶、底、左和右)。

直接使用openGL可以有多种方式。选择哪一个取决于您的需求。

一种方法是使用视口。这描述了您要绘制到缓冲区的哪一部分,以便您可以将其拆分为多个绘制调用,绘制到不同的位置。这通常对在视图情况下的视图更有用。

可能最好的方法是将整个场景绘制到带有附加纹理的FBO (帧缓冲区对象)。然后创建你想要动画的精灵(矩形),然后绘制部分纹理到这些矩形。

不过,您仍然需要一个能够在openGL中进行动画处理的系统。为了实现这一点,你需要做一个矩阵插值。这可能需要一些时间,但通常是值得的,因为您可以完全控制动画以及它们是如何完成的。请注意,由于旋转,您将需要在极坐标系统中进行插值,这意味着将3个基本矢量(矩阵的左上角3x3部分)转换为angle+radius并对其进行插值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33686000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档