Opengl es GLES2中的alpha通道混合问题

Opengl es GLES2中的alpha通道混合问题,opengl-es,opengl-es-2.0,alphablending,blending,Opengl Es,Opengl Es 2.0,Alphablending,Blending,我有一个需要,我需要有单独的阿尔法通道混合,但它不工作 让我用我的测试来解释 Alpha混合已启用,我已将颜色和Alpha写入掩码设置为true 1) 我正在用glClear(0,0,0,1)清除缓冲区 2) 我正在绘制一个大的2D四元体,它的颜色混合为一半,并且“将目标alpha值设置为零”(>这就是我需要实现的!) Src颜色为(1,1,1,0.5) 以下是我正在设置的混合参数 transparencyData.color_blendfunc = BlendInfo.BLEND_FU

我有一个需要,我需要有单独的阿尔法通道混合,但它不工作

让我用我的测试来解释

Alpha混合已启用,我已将颜色和Alpha写入掩码设置为true

1) 我正在用glClear(0,0,0,1)清除缓冲区

2) 我正在绘制一个大的2D四元体,它的颜色混合为一半,并且“将目标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
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
3) 我正在上面的四边形中绘制一个较小的二维四边形 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_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
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值设置为零的需求并没有发生。 我之所以知道这一点,是因为在步骤3中渲染的四元体应该在目标alpha为0时出现,而在目标alpha为1时不会出现。 这让我相信,要么阿尔法混合可能正在发生的是不工作,并得到书面目的地,或我做了一些不正确的

为此,我使用glBlendEquationSeparate和glblendefuncseparate


你能告诉我我在做什么吗?

确保你的颜色缓冲区中有一个alpha通道。你能添加结果图像吗?因为这可能更容易解决。顺便说一句,在每一步之后,试着在你认为可能有问题的区域读取一些像素,看看到底发生了什么。