我有以下的流程:
- draw background
- draw objects and blend with background (1)GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA
- draw particle effect with blending (2)GL10.GL_SRC_ALPHA, GL10.GL_ONE in order to highlight overlapping particles
问题 - 当我绘制粒子时,它们会与背景混合,并且变得非常明亮。
简而言之,我需要的是将粒子与(2)混合,然后再使用(1)将所有内容与背景混合在一起。
不起作用的解决方案:
- 将效果绘制到纹理上,然后应用它可以正常工作...但是非常慢。 - 首先绘制粒子效果,然后再绘制背景,看起来不错...但是我不能绘制场景对象,因为它们需要在背景和效果之间。
这是屏幕截图,显示了差别。右侧是所需结果,左侧是粒子与背景混合。
图片:
我会感激任何帮助...
最新更新: 我能得到我想要的颜色...但是...(似乎这种方式无法帮助我) 我已经渲染了透明度为0的背景,然后使用GL11Ext的混合函数: glBlendFuncSeparate(GL10.GL_SRC_ALPHA,GL10.GL_DST_ALPHA,GL10.GL_ONE,GL10.GL_ONE);
GL10.GL_SRC_ALPHA,GL10.GL_DST_ALPHA - 仅当它们具有alpha(bg现在没有)时才混合颜色
GL10.GL_ONE,GL10.GL_ONE - alpha设置为所有编写的粒子的最大值,以模拟加法混合
它可以很好地工作,如您所见...除了黑色填充区域,在那里粒子图像的alpha为0...并且糟糕的是在结果图像中,该黑色颜色具有alpha 1,因此我无法以任何方式替换它...
编辑_2 简单地说,一般性问题是:我需要绘制一个红色(0xff0000)发光(加性混合)效果。在黑色背景上没有问题,但是如果我使用绿色(0x00ff00),那么结果颜色将接近于0xffff00。
有什么想法吗?