Android OpenGL ES2着色器错误(我认为)

Android OpenGL ES2着色器错误(我认为),android,opengl,glsl,opengl-es-2.0,Android,Opengl,Glsl,Opengl Es 2.0,我只是gamedev的初学者,所以当我在Linux PC上完成了几乎完成的游戏测试后,在Android Emulator上完成了测试,游戏按照我的预期运行。但后来我在安卓设备上运行我的游戏,我对屏幕的黑度印象深刻,它完全是黑色的。 在OpenGLES跟踪之后,我想我找到了一个包含错误的地方。然而,我不知道如何修复它。 错误在顶点着色器中的某个位置,因为编译时间为16ms(!),然后GLES在着色器中的变量上给出了无效指针(-1) // VERTEX SHADER uniform float as

我只是gamedev的初学者,所以当我在Linux PC上完成了几乎完成的游戏测试后,在Android Emulator上完成了测试,游戏按照我的预期运行。但后来我在安卓设备上运行我的游戏,我对屏幕的黑度印象深刻,它完全是黑色的。 在OpenGLES跟踪之后,我想我找到了一个包含错误的地方。然而,我不知道如何修复它。 错误在顶点着色器中的某个位置,因为编译时间为16ms(!),然后GLES在着色器中的变量上给出了无效指针(-1)

// VERTEX SHADER
uniform float aspectRatio;
uniform float size;
uniform vec2 translateVec;
attribute vec4 vertex;
mat4 projection = mat4(
    vec4(1.0/(aspectRatio*12), 0.0, 0.0, 0.0),
    vec4(0.0, 1.0/12, 0.0, 0.0),
    vec4(0.0, 0.0, 0.0, 0.0),
    vec4(0.0, 0.0, 0.0, 1.0)
);
mat4 translate = mat4(
    vec4(size, 0.0, 0.0, 0.0),
    vec4(0.0, size, 0.0, 0.0),
    vec4(0.0, 0.0, 0.0, 0.0),
    vec4(translateVec.x, translateVec.y, 0.0, 1.0)
);
void main() {
    gl_Position = projection * translate * vertex;
}

// FRAGMENT SHADER
#ifdef GL_FRAGMENT_PRECISION_HIGH
    precision highp float;
#else
    precision mediump float;
#endif
uniform float color;
void main() {
    gl_FragColor = vec4(color, color, color, 1.0);
}
错误:“*”不在“float”和“int”上操作 错误:“/”不在“float”和“int”上操作 替换

(1.0*12)
(aspectRatio*12)



替换

(1.0*12)

(1.0*12.0)