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

时间:2014-11-27 19:39:26

标签: android opengl glsl opengl-es-2.0

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

1 个答案:

答案 0 :(得分:1)

错误:'*'不能在'float'和'int'

上运行

错误:'/'不能在'float'和'int'

上运行

替换

(aspectRatio*12)

(aspectRatio*12.0)



替换

(1.0*12)

(1.0*12.0)