OpenGL在Android中使用MIX函数消除颜色错误

OpenGL在Android中使用MIX函数消除颜色错误,android,glsl,opengl-es-2.0,Android,Glsl,Opengl Es 2.0,在opengl es程序中,我输入两个纹理并使用片段着色器: varying highp vec2 textureCoordinate; varying vec2 textureCoordinate2; uniform sampler2D inputImageTexture; uniform sampler2D inputImageTexture2; uniform lowp float intensity;

在opengl es程序中,我输入两个纹理并使用片段着色器:

        varying highp vec2 textureCoordinate;
        varying vec2 textureCoordinate2;
        uniform sampler2D inputImageTexture;
        uniform sampler2D inputImageTexture2;
        uniform lowp float intensity;
        void main() {
            highp vec4 newColor = texture2D(inputImageTexture2,textureCoordinate2);
            highp vec4 vColor = texture2D(inputImageTexture, textureCoordinate); 
            newColor.r = newColor.r + vColor.r * (1.0 - newColor.a);
            newColor.g = newColor.g + vColor.g * (1.0 - newColor.a);
            newColor.b = newColor.b + vColor.b * (1.0 - newColor.a);
            gl_FragColor = vec4(mix(vColor.rgb, newColor.rgb, 0.86), newColor.a);
        };

但是这里的结果有一些“错误颜色”,如何解决这个问题?

我自己找到了答案,这是因为我从同一个FBO纹理中写入和读取,现在我更改了它,工作正常

添加着色器logs@Zoe如何获取着色器日志?如果有逻辑怀疑这些类型的工件与着色器的内容相关,请编译并打印它们。我认为您的一个纹理包含垃圾(通过修改着色器一次显示一个纹理来测试该理论-别忘了可视化alpha通道),或者帧缓冲区出了问题-例如,您可能与帧缓冲区中的垃圾混合,或者其中一个纹理是帧缓冲区本身(这是不允许的)@Columbo gpuimage的过滤器组中的每个过滤器都渲染到相应的FBO纹理,每个纹理的输入是前一个FBO渲染纹理的输出。在我的GL程序中有一个纹理是FBO的输出,不可行吗?