gpt4 book ai didi

android - OpenglES 混合粒子但不混合背景

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:34 26 4
gpt4 key购买 nike

我有下一个流程:

 - 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) 将所有粒子混合在一起以与背景混合。

不工作的解决方案:

  • 在纹理上绘制效果并应用它效果很好……但非常慢。
  • 先画粒子效果再画背景,看起来还可以...但是我不能画场景对象,因为它们需要在背景和效果之间

这是显示差异的屏幕。在右边期望的结果,在左边粒子与背景混合。

图片:

enter image description here

我将不胜感激任何帮助...

最新更新:我能够得到我想要的颜色......但是......(似乎这种方式不会让我无处可去)我用 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 设置为最大值以模拟加法混合

enter image description here

如您所见,它工作正常...除了黑色填充区域,其中粒子图像的 alpha 0..结果图像中黑色的 alpha 1 有什么不好,所以我无法以任何方式替换它。 ..

EDIT_2一般问题简单来说:我需要绘制红色(0xff0000)发光(加法混合)效果。在黑色背景上没问题,但如果我选择绿色(0x00ff00),结果颜色将接近 0xffff00

有什么想法吗?

最佳答案

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

除了添加剂混合之外,没有其他方法可以避免对颗粒进行分类。如果您仍然想坚持这样做以避免粒子重叠,我建议您在渲染中注入(inject)一个出血控制,这样您就可以降低渲染粒子的亮度或降低粒子纹理的亮度。

关于android - OpenglES 混合粒子但不混合背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com