GLES2中的alpha通道混合问题

时间:2014-06-09 05:22:16

标签: opengl-es opengl-es-2.0 alphablending blending

我需要在alpha通道中进行单独混合但不起作用。

让我用我的测试来解释。

启用了Alpha混合,我将color和alpha write mask设置为true。

1)我正在使用glClear(0,0,0,1)

清除缓冲区

2)我正在绘制一个大的2D四边形,它的颜色混合到一半,并且将#34;目标alpha值设置为零" ( - >这是我需要实现的!) Src颜色为(1,1,1,0.5)

以下是我正在设置的混合参数

transparencyData.color_blendfunc     = BlendInfo.BLEND_FUNC_ADD
transparencyData.alpha_blendfunc     = BlendInfo.BLEND_FUNC_ADD
transparencyData.colorSrc_blendfactor = BlendInfo.BLEND_FACTOR_SRC_ALPHA
transparencyData.colorDst_blendfactor    = BlendInfo.BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
transparencyData.alphaSrc_blendfactor    = BlendInfo.BLEND_FACTOR_ZERO
transparencyData.alphaDst_blendfactor    = BlendInfo.BLEND_FACTOR_ZERO

3)我在上面的四边形内画了一个较小的2D四边形 Src颜色为(1,1,1,1) 以下是我设置的混合参数

transparencyData.color_blendfunc     = BlendInfo.BLEND_FUNC_ADD
transparencyData.alpha_blendfunc     = BlendInfo.BLEND_FUNC_ADD
transparencyData.colorSrc_blendfactor = BlendInfo.BLEND_FACTOR_ONE_MINUS_DST_ALPHA
transparencyData.colorDst_blendfactor    = BlendInfo.BLEND_FACTOR_DST_ALPHA
transparencyData.alphaSrc_blendfactor    = BlendInfo.BLEND_FACTOR_ONE
transparencyData.alphaDst_blendfactor    = BlendInfo.BLEND_FACTOR_ZERO

现在,当步骤2渲染的四边形显示为半混合时,我想要的目标是将目标的最终alpha值设置为零,这种情况不会发生。 我怎么知道这是因为如果目标alpha为零,则在步骤3中呈现的四边形应该出现,如果目标alpha为1则不会出现。 这让我相信可能发生的alpha混合不起作用并写入目的地或者我做的事情不对!

我为此目的使用glBlendEquationSeparate和glBlendFuncSeparate。

你可以请光明并帮助我做我想做的事吗?

0 个答案:

没有答案