繁体   English   中英

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

[英]OpenGL ES2 shader error (I think)

我只是gamedev的初学者,所以当我在Linux PC上完成即将完成的游戏测试之后,在Android Emulator上测试完之后,游戏便按预期工作了。 但是后来我在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);
}

错误:“ *”不能在“ float”和“ int”上运行

错误:“ /”在“ float”和“ int”上不起作用

更换

(aspectRatio*12)

(aspectRatio*12.0)



更换

(1.0*12)

(1.0*12.0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM