- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 EAGLView 层上渲染了一个 opengl 场景,并在 UIView 上渲染了一些其他元素(圆圈等)(它是 EAGLView 的同级,位于其上方)。是否可以在两层之间混合颜色?我想做一些差异混合以获得 EAGLView 颜色的反转效果。
我一直在使用 CGBlendMode,但它似乎只影响我在当前 View 中绘制的内容。我认为这与 CGContext 有关,但我对细节有点模糊,我可以强制 UIView 和 EAGLView 具有相同的 CGContext 以便它们之间进行混合吗?
非常感谢帮助、更正、澄清。提前致谢,-S
最佳答案
简短的回答是你不能。长答案如下。
通过EAGLView
,您必须指的是包含在Xcode 的OpenGL ES 模板中的UIView
的子类。该类的特殊之处在于,layerClass
类方法被重写,并返回 CAEAGLLayer
类,而不是默认的 CALayer
类。
UIView
和 CALayer
成对工作。所有 UIView
对象都由 CALayer
支持,CALayer
是负责布局和渲染到屏幕的对象。 UIView
是 CALayer
的委托(delegate),负责在需要时绘制其图形。
CALayer
将让它的委托(delegate)(UIView
)绘制到 CGContextRef
中。每个 UIView
都有一个上下文,因此您不能使用 CGBlendMode
来混合多个 View ,因为它只能在一个 UIView 上下文中运行。
CALayer
的混合应使用过滤器属性来完成。这些是为 iPhone 操作系统定义的,但根据文档,可用的过滤器未定义。这是因为 Core Image 目前在 iPhone 操作系统上不可用。
关于iphone - 如何在 UIView 和 EAGLView 之间进行混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401607/
我是一名优秀的程序员,十分优秀!