Alpha 混合和 UIView 背景颜色

Posted

技术标签:

【中文标题】Alpha 混合和 UIView 背景颜色【英文标题】:Alpha blending and UIView background color 【发布时间】:2013-08-04 21:25:07 【问题描述】:

当我使用 OpenGL 绘制半透明纹理时,看起来我将它们与 EAGLView backgroundColor 混合在一起。

((EAGLView*)my_view).backgroundColor = [UIColor redColor];

opaque 属性设置为 YES。

现在图像看起来是红色的,当我变成黑色时,它变成灰色(与黑色混合),变成白色时变成白色(甚至是半透明的黑色)。 会是什么?

我的混合函数设置是:src BFP_SRC_ALPHA, dest ONE_MINUS_SRC_ALPHA 我也尝试过(可能类似于预乘 alpha): src ONE dest GL_ONE_MINUS_SRC_ALPHA - 效果不错,但在绘制半透明四边形(不是纹理)时出现问题。

【问题讨论】:

【参考方案1】:

问题在于预乘 alpha 使用 src ONE dest GL_ONE_MINUS_SRC_ALPHA,并且 args 也必须使用预乘 alpha glColor4f(r*a, g*a, b*a, a)

【讨论】:

以上是关于Alpha 混合和 UIView 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

在 Alpha 混合图像上设置背景颜色

在 xib 中带有 alpha 的 UIView 背景颜色

Swift UIView 背景颜色不透明度

Alpha 混合 - 反复混合 RGBA 颜色会产生黑色

Objective C-以编程方式插入UIButton的标题,在选中时更改背景和标题颜色

如何更改 UIPickerView 中的背景颜色?