2014-11-22 41 views
0

我使用CoreAnimation在屏幕上绘制东西(例如CAShapeLayer,CAReplicatorLayer,CATextLayer)。CoreAnimation - 获取绘制内容纹理的最快方法

在屏幕上获取绘制内容的纹理的最快方法是什么? (比renderInContext快得多,在我的场景中最多需要2秒)

我的设备上某处存在一个渲染缓冲区,其中包含此绘制内容,可能最好的解决方案是能够访问它。

+0

你有兴趣使用私有API或没有(即你想在商店中的应用程序)? – 2014-11-23 12:20:14

+0

我希望我的应用程序在t他最后储存了,但我正在寻找任何可以让它在第一时间起作用的方法。所以如果你知道一个私有API来做到这一点,我很乐意知道! – Max 2014-11-24 13:14:06

回答

0

您可以作为IOSurface获取帧缓冲区,并从中创建一个图像(这是iOS上的私有API)。这可能是最快的解决方案。

你应该可以通过搜索“iOS IOSurface”来解决问题(因为它是私人的,你不能真正阅读任何关于它的官方文档(不过它在OS X上是公开的,所以那里有一些文档是主要是相关的)This questions似乎已经得到它大部分是正确的,并且看起来像一个良好的起点

但是,这不会帮助你,如果你想在商店上发布的应用程序,我不认为这它会给你任何代码,你可以在商店中重复使用。

+0

谢谢,看起来很有希望! (无论如何,我正在与CARenderServer/CA性能问题长期战斗,请参阅我的其他问题....所以这件事可能会给一些更多的控制!) 但是...我从哪里得到这些IOSurface头?我发现我应该从Mac头文件中复制它们,但他们不在优胜美地。 – Max 2014-11-24 16:13:07

+0

http://stackoverflow.com/questions/21009761/finding-iosurface-headers – 2014-11-24 16:35:12

+0

是的,对,我看到了这个;)但这是为Mac而不是为iOS。我也在那里找到了框架,但是如何在iOS上获得它?我会更多一点谷歌! – Max 2014-11-24 17:30:21