gpt4 book ai didi

iphone - 如何在 UIView 和 EAGLView 之间进行混合?

转载 作者:行者123 更新时间:2023-12-03 19:35:44 27 4
gpt4 key购买 nike

我在 EAGLView 层上渲染了一个 opengl 场景,并在 UIView 上渲染了一些其他元素(圆圈等)(它是 EAGLView 的同级,位于其上方)。是否可以在两层之间混合颜色?我想做一些差异混合以获得 EAGLView 颜色的反转效果。

我一直在使用 CGBlendMode,但它似乎只影响我在当前 View 中绘制的内容。我认为这与 CGContext 有关,但我对细节有点模糊,我可以强制 UIView 和 EAGLView 具有相同的 CGContext 以便它们之间进行混合吗?

非常感谢帮助、更正、澄清。提前致谢,-S

最佳答案

简短的回答是你不能。长答案如下。

通过EAGLView,您必须指的是包含在Xcode 的OpenGL ES 模板中的UIView 的子类。该类的特殊之处在于,layerClass 类方法被重写,并返回 CAEAGLLayer 类,而不是默认的 CALayer 类。

UIViewCALayer 成对工作。所有 UIView 对象都由 CALayer 支持,CALayer 是负责布局和渲染到屏幕的对象。 UIViewCALayer 的委托(delegate),负责在需要时绘制其图形。

CALayer 将让它的委托(delegate)(UIView)绘制到 CGContextRef 中。每个 UIView 都有一个上下文,因此您不能使用 CGBlendMode 来混合多个 View ,因为它只能在一个 UIView 上下文中运行。

CALayer 的混合应使用过滤器属性来完成。这些是为 iPhone 操作系统定义的,但根据文档,可用的过滤器未定义。这是因为 Core Image 目前在 iPhone 操作系统上不可用。

关于iphone - 如何在 UIView 和 EAGLView 之间进行混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401607/

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