我有下一个过程:
- 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)与背景混合。
不工作的解决方案:
- 将效果绘制到纹理上而不是应用它可以正常工作……但速度极慢。
- 先画粒子效果再画背景,看起来还可以……但我不能画场景对象,因为它们需要在背景和效果之间
这是显示差异的屏幕。右边的期望结果,左边的粒子与背景混合。
图像:
我将不胜感激任何帮助...
最新更新: 我能够得到我想要的颜色......但是......(似乎这种方式会让我无处可去)我已经用 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
有任何想法吗?