我有下一个程序:
- 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)来混合背景。
不可行的解决办法:
这里是显示差别的屏幕。在右边期望的结果上,左边的粒子和背景混合在一起。
img:

我会感谢任何帮助..。
最新更新:I能够得到颜色i want...but.(看来这种方式不会让我移动)我用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 -只有当它们有α时才会混合(bg现在没有)
GL10.GL_ONE,GL10.GL_ONE - alpha被设置为所有书面粒子的最大值,以模拟添加剂的混合。

它可以很好的工作,因为你可以see...except的黑色填充区,其中粒子图像有α,0..and什么坏,在结果的图像,黑色有α1,所以我不能取代它在任何方式。
EDIT_2一般问题用简单的话说:我需要画一个红色(0xff0000)发光(加性混合)效应。在黑色背景下可以,但如果我选择绿色(0x00ff00),则结果颜色将接近0xff00。
有什么想法吗?
发布于 2011-03-14 23:51:58
GL10.GL_SRC_ALPHA,GL10.GL_ONE用于突出重叠粒子
为了避免对颗粒进行分选,除了添加剂的混合之外,没有别的方法。如果你仍然想坚持这样做,以避免粒子的重叠,我建议你在渲染中注入一个吸音控制,这样你就可以降低渲染粒子的亮度,或者降低粒子纹理的亮度。
发布于 2011-03-18 09:19:40
您可以使用较大,0)来拒绝来自粒子的alpha=0片段。但是,请记住,首先要测试)。
发布于 2011-03-25 15:34:57
呈现到一个单独的帧缓冲区工作吗?你是否把你所有的粒子加在一个全透明的框架缓冲器中,然后做一个正常的α混合。
https://stackoverflow.com/questions/5302544
复制相似问题