0

我是 OpenGL 的新手。下面是我用于渲染的片段着色器代码,但在所有三星设备中它只显示红色,而在 Nexus 4 和 5 中它给出了正确的结果。没有链接错误,即使我只是简单地初始化矩阵而不使用,它也会给出红色。

我搜索并发现 Mali GPU 存在一些问题。如何定义一个随机矩阵并在片段着色器代码中使用该矩阵,以便它在所有平台上为我提供正确的结果。

        fragmentShaderCode5 = 
        "#extension GL_OES_EGL_image_external :  require\n"
        + "precision lowp float;"
        + "varying vec2 v_TexCoordinate;"
        + " mat4 colorMatrix;"
        + "uniform samplerExternalOES texture;"
        + "void main()\n {"
        + " mat4 colorMatrix = mat4(0.3588f, 0.7044f, 0.1368f, 0f,            
          0.2990f,0.5870f, 0.1140f, 0f, 0.2392f, 0.4696f, 0.0912f ,0f, 
          0f,0f,0f,0f);"
        + " vec4 color = texture2D(texture, v_TexCoordinate);"
        + " vec4 outputColor = color*colorMatrix ;"
        + " gl_FragColor =  (0.1 * color) + ((1.0 - 0.1) * 
          outputColor);"
        + "}";
4

0 回答 0