Android 在Opengl es 2.0片段着色器中,是否有方法获取以前的片段颜色

Android 在Opengl es 2.0片段着色器中,是否有方法获取以前的片段颜色,android,opengl-es,glsl,opengl-es-2.0,fragment-shader,Android,Opengl Es,Glsl,Opengl Es 2.0,Fragment Shader,我的代码正在绘制背景图像,并在该图像的顶部绘制一些其他图像(粒子)。 我想让粒子有一些混合效果,比如变暗,变亮,燃烧。。。与画布globalcompositeoperation相同。 因此,在片段着色器中,我需要获得以前的片段颜色,并将其与新颜色混合。 但是我找不到一种方法来做这件事。不,在标准范围内是不可能的。但是,通过扩展(非马里设备)和(设备),可以读取帧缓冲区中的值(因为OpenGL 2.0和OpenGL ES 2.0/3.0): 此扩展提供了一种机制,片段着色器可以通过该机制读取现有帧

我的代码正在绘制背景图像,并在该图像的顶部绘制一些其他图像(粒子)。 我想让粒子有一些混合效果,比如变暗,变亮,燃烧。。。与画布globalcompositeoperation相同。 因此,在片段着色器中,我需要获得以前的片段颜色,并将其与新颜色混合。
但是我找不到一种方法来做这件事。

不,在标准范围内是不可能的。但是,通过扩展(非马里设备)和(设备),可以读取帧缓冲区中的值(因为OpenGL 2.0和OpenGL ES 2.0/3.0):

此扩展提供了一种机制,片段着色器可以通过该机制读取现有帧缓冲区数据作为输入。这可以用来实现合成操作,如果使用固定的函数混合,这些操作将不方便或不可能实现。它还可用于将函数应用于帧缓冲区颜色,方法是编写使用现有帧缓冲区颜色作为其唯一输入的着色器

请注意,不能保证硬件将支持扩展。您需要在运行时测试扩展是否受支持

如果要从上一次渲染中读取片段,通常的方法是实现多个渲染过程并渲染到纹理。另见

在许多情况下,不需要在片段着色器中读取片段。可以使用标准功能实现许多渲染效果。可以使用更改混合函数,也可以使用更改混合方程。

是的,这是可能的。 首先,将结果渲染到texturebuffer。 然后将texturebuffer发送到第二个着色器以应用效果

要了解如何做到这一点,请查找关键字
GLES20.glBindFramebuffer(GL_FRAMEBUFFER,mFramebuff)

httpdigest,你能帮我做硬件混合吗?