1

当我使用 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 - 结果很好,但是在绘制半透明四边形(不是纹理)时出现问题。

4

1 回答 1

0

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

于 2013-08-06T15:15:37.333 回答