我正在关注着色器上的dermetfan教程,虽然我的代码看起来非常相似,但它并没有达到预期的效果。不会发生编译错误,也不会写入日志。
ShaderProgram.pedantic = false;
shader = new ShaderProgram(Gdx.files.internal("shaders/red.vsh"), Gdx.files.internal("shaders/red.fsh"));
System.out.println(shader.isCompiled() ? "Compiled shader!" : shader.getLog());
batch.setShader(shader);
并且此代码是vsh
attribute vec4 a_color;
attribute vec3 a_position;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec4 v_color;
varying vec2 v_texCoord0;
void main(void) {
v_color = a_color;
v_texCoord0 = a_texCoord0;
gl_Position = u_projTrans * vec4(a_position, 1.);
}
并且继承人.fsh
varying vec4 v_color;
varying vec2 v_texCoord0;
uniform sampler2D u_sampler2D;
void main() {
gl_FragColor = texture2D(u_sampler2D, v_texCoord0) * v_color;
gl_FragColor = vec4(1.,0.,0.,1.);
}
如果我摆脱了着色器,我的纹理加载得很好,但是当我使用着色器运行时,我的纹理似乎消失了。
EDIT 请尽量避免在代码中查找错误,ShaderProgram.pedantic = false,我知道我的代码与我正在观看的教程相同,但他的作品和我的作品却没有。谢谢你的帮助!