`contextWithCGContext:options:`方法的用途及相关技术疑问
关于
CIContext与CGContextRef交互的问题解答 1. 已包含图形的CGContextRef在新创建的CIContext中如何被使用?
当你通过+[CIContext contextWithCGContext:options:]创建CIContext时,传入的CGContextRef仅作为渲染目标,它已有的图形内容不会被CIContext读取或纳入自身状态。CIContext不会主动处理这些已有内容,只是把这个CGContext当作后续渲染输出的画布。
2. CGContextRef的内容是否会对CIFilters产生任何影响?
不会。CIFilter的运行仅依赖自身设置的输入参数(比如inputImage、各种滤镜参数)以及CIContext提供的渲染环境,和传入CIContext的CGContextRef里已有的图形完全无关。滤镜的计算逻辑不会读取该CGContext中的任何已有内容。
3. 能否将CIFilters生成的CIImages输出至初始的CGContextRef中?
完全可以。这正是这个API的核心用途之一。你可以通过CIContext的-drawImage:inRect:fromRect:方法,把滤镜处理后的CIImage直接绘制到传入的CGContextRef上。绘制时,CIImage的内容会按图形上下文的混合模式叠加到已有内容之上,不会自动清除原有图形(除非你主动调用CGContextClearRect这类方法)。
内容的提问来源于stack exchange,提问作者Kibernetik
相关产品推荐
相关产品推荐

