我正在玩Open GL和核心动画,并且能够在开放的GL图层上进行仿射变换,一切都很好。寻求有关如何变换图层子集的帮助,这意味着上半部分或底部四分之一,只旋转这些像素,同时保持图层的其余部分不受影响。
或者,如果我有1个openGL图层,则可以将其拆分为2个(顶部和底部)。然后我可以根据需要执行变换。我无法访问图层中的子视图,只能访问整个图层。
任何建议都将受到赞赏。
答案 0 :(得分:0)
要在视图管道中执行此操作,您需要多个视图。一般情况下,这没有任何问题,但你需要做一些工作来绘制每个视图,以便它看起来像一个整体。如果您使用glOrtho
等标准投影矩阵,则只需将边框参数(顶部,底部,左侧和右侧)拆分为视图分割。
直接用openGL做多种方式。选择哪个取决于您的需求。
一种方法是使用视口。这描述了您要绘制的缓冲区的哪个部分,因此您可以将其拆分为绘制到不同位置的多个绘制调用。对于视图情况下的视图,这通常更有用。
可能最好的方法是将整个场景绘制到带有附加纹理的FBO(帧缓冲对象)。然后创建要设置动画的精灵(矩形),然后将纹理的一部分绘制到那些矩形。
然后你需要一个能够在openGL中制作动画的系统。为此,您需要进行矩阵插值。它可能需要一些时间,但通常是值得的,因为您可以完全控制动画以及它们是如何完成的。请注意,由于旋转,您需要在极坐标系中进行插值,这意味着将3个基矢量(矩阵的左上角3x3部分)转换为角度+半径并插值。