我有下一个过程:
- 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)与背景混合.
不工作的解决方案
>绘制效果到纹理而不是应用它工作正常…但非常慢.
>首先绘制粒子效果而不是背景,它看起来不错……但我不能绘制场景对象,因为它们需要介于bg和效果之间
这是显示差异的屏幕.在正确的期望结果上,左侧粒子与背景混合.
IMG:
我将不胜感激任何帮助……
最新更新:
我能够得到我想要的颜色……但是……(看起来这样会让我无处可去)
我使用alpha = 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所以我无法以任何方式替换它…
EDIT_2
简单的一般问题:我需要绘制一个红色(0xff0000)发光(添加混合)效果.在黑色背景上它是好的,但如果我采取绿色(0x00ff00)比结果颜色将接近0xffff00
有任何想法吗?