可以在EAGLLayer上使用Quartz 2D绘图吗?

时间:2012-01-29 00:40:35

标签: iphone ios opengl-es quartz-2d

在我的应用程序中,我有一个均衡器,后面有一个可视化器。

均衡器是一系列点,它们是使用Quartz 2D在它们之间绘制路径的图像视图(底部和左侧也有刻度标记,表示频率和增益量)。其背后是使用OpenGL和CAEAGLLayer完成的可视化工具。

设置方法是我的视图控制器主视图的子视图处理可视化器,上面是绘制路径的主视图的另一个子视图。以上两者都是eq点的图像视图。

发生的事情是,路径一直播放,直到歌曲开始并且可视化器开始绘制。它似乎消灭了它上面的Quartz 2D。即使它每次绘制时都在它上面的视图上调用setNeedsDisplay也不起作用。像OpenGL一样可以在那里画画。然而,UIImageView eq指向,保持可见。

有没有办法在带有gl层的视图上使用Quartz 2D?我不想使用OpenGL来使用OpenGL绘制路径和刻度标记,因为我必须绘制到512x512或1024x1024纹理并缩放它,所以它看起来不完美,我已经有了工作的Quartz用于绘制所有内容的代码。

1 个答案:

答案 0 :(得分:1)

  

有没有办法在带有gl层的视图顶部使用Quartz 2D?

是的,这是明确支持的。 docs甚至提供了有关如何优化此配置的绘图的详细信息。

我怀疑你的观点实际上是错误的顺序而GL观点是最重要的。首先,确保您的GL视图标记为opaque(为了提高性能,还因为如果它的顺序错误,它会更明显)。然后检查您的视图排序(查看主视图的subviews)。