gpt4 book ai didi

ios - CAEmitterLayer 在-renderInContext : of superlayer is called 时不渲染

转载 作者:可可西里 更新时间:2023-11-01 03:56:17 30 4
gpt4 key购买 nike

我有一个绘图应用程序,我希望我的用户能够在他们的绘图中使用粒子效果。基本上,该应用程序的目的是执行自定义绘图并保存到相机胶卷或通过万维网共享。

我最近遇到了 CAEmitterLayer 类,我认为这是添加粒子效果的一种简单有效的方法。

我已经能够使用 CAEmitterLayer 实现在应用程序的屏幕上绘制粒子。所以在屏幕上渲染效果很好。

当我开始渲染绘图的内容时使用

CGContextRef context = UIGraphicsBeginImageContextWithSize(self.bounds.size);

// The instance drawingView has a CAEmitterLayer instance in its layer/view hierarchy
[drawingView.layer renderInContext:context];


//Note: I have also tried using the layer.presentationLayer and still nada

....
//Get the image from the current image context here for saving to Camera Roll or sharing


....the particles are never rendered in the image.

我认为正在发生的事情

CAEmitterLayer 处于“激活”粒子的恒定状态。这就是为什么当我尝试渲染图层时(我也尝试渲染 layers.presentationLayer 和 modelLayer),动画永远不会提交,因此屏幕外图像渲染不包含粒子。

问题是否有人在屏幕外渲染了 CAEmitterLayer 的内容?如果有,你是怎么做到的?

备选问题有谁知道任何不使用 OpenGL 且不是 Cocos2D 的粒子效果系统库?

最佳答案

-[CALayer renderInContext:] 在一些简单的情况下很有用,但在更复杂的情况下将无法按预期工作。您将需要找到其他方法来进行绘图。

The documentation for -[CALayer renderInContext:]说:

The Mac OS X v10.5 implementation of this method does not support the entire Core Animation composition model. QCCompositionLayer, CAOpenGLLayer, and QTMovieLayer layers are not rendered. Additionally, layers that use 3D transforms are not rendered, nor are layers that specify backgroundFilters, filters, compositingFilter, or a mask values. Future versions of Mac OS X may add support for rendering these layers and properties.

(这些限制也适用于 iOS。)

header CALayer.h 还说:

 * WARNING: currently this method does not implement the full
* CoreAnimation composition model, use with caution. */

关于ios - CAEmitterLayer 在-renderInContext : of superlayer is called 时不渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926690/

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