我只是gamedev的初学者,所以当我在Linux PC上完成我几乎完成的游戏测试后,在Android模拟器上测试,游戏按照我的预期运行。但后来我在Android设备上运行我的游戏,我对屏幕的黑度印象深刻,它完全是黑色的。 在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);
}
答案 0 :(得分:1)
替换
(aspectRatio*12)
到
(aspectRatio*12.0)
替换
(1.0*12)
到
(1.0*12.0)