android – OpenglES混合粒子而不是背景

前端之家收集整理的这篇文章主要介绍了android – OpenglES混合粒子而不是背景前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有下一个过程:
- 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

有任何想法吗?

解决方法

GL10.GL_SRC_ALPHA,GL10.GL_ONE in order to highlight overlapping particles

添加剂混合之外没有其他方法可以避免需要对颗粒进行分类.如果您仍然希望坚持这一点以避免粒子重叠,我建议您在渲染中注入一个渗透控件,这样可以减少渲染粒子的亮度,或者可以降低粒子纹理的亮度.

猜你在找的Android相关文章