如何在我的UIView和我的EAGLView之间进行混合?

spe*_*wah 3 opengl iphone eaglview uikit uiview

我在EAGLView图层上有一个opengl场景渲染,在UIView(它是EAGLView的兄弟,位于它上面)上呈现了一些其他元素(圆圈等).是否可以在两层之间混合颜色?我想做一些差异混合,以获得EAGLView颜色的反转效果.

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

帮助,更正,澄清都很受欢迎.在此先感谢,-S

Pey*_*loW 7

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

通过EAGLView您的意思是必须的子类UIView中包含了OpenGL ES模板在Xcode.这个类的特殊之处在于,layerClass类方法被重写并返回CAEAGLLayer类而不是CALayer类,默认情况下.

UIViewCALayer成对工作.所有UIView对象都由a支持CALayer,CALayer是负责布局和渲染到屏幕的对象.本UIView为代表的CALayer,并负责在需要时绘制它的图形.

CALayer会让它的委托(the UIView)绘制成一个CGContextRef.它是一个上下文UIView,因此您不能使用它CGBlendMode来混合多个视图,因为它只能在一个单独的UIView上下文中运行.

CALayer应使用过滤器属性进行混合.这些是为iPhone OS定义的,但根据文档未定义可用的过滤器.这是因为目前iPhone OS上没有Core Image.