我是 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);"
+ "}";