LibGDX - ShaderProgram不会编译

时间:2017-07-17 16:40:07

标签: libgdx glsl shader


我正在尝试在LibGDX 1.6.1中设置SpriteBatch的着色器。 问题是着色器无法编译。

顶点着色器:

attribute vec3 a_position;

uniform mat4 u_projTrans;

void main() {
   gl_Position = u_projTrans * vec4(a_position, 1.0);
}


片段着色器:

uniform sampler2D u_texture;
void main() {
   gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}

我认为这段代码没问题,但是日志说:“错误C1066:类型构造函数中的类型无效”和“错误C1035:不兼容类型的分配”。编译状态为false。这有什么问题?

1 个答案:

答案 0 :(得分:0)

我正在使用1.9.6而未在1.6.1

上进行测试

顶点着色器:

attribute vec3 a_position;
uniform mat4 u_projTrans;

void main()
{
   gl_Position =  u_projTrans * vec4(a_position,1.0);
}

片段着色器:

#ifdef GL_ES
precision mediump float;
#endif

void main() {

   gl_FragColor = vec4(0.0,1.0,0.0,1.0);
}

然后在代码中:

ShaderProgram shaderProgram=new ShaderProgram(Gdx.files.internal("test.vert.glsl"),Gdx.files.internal("test.frag.glsl"));
shaderProgram.pedantic=false;

if(shaderProgram.isCompiled()){
    batch.setShader(shaderProgram);
}else {
    Gdx.app.log("ShaderTest", shaderProgram.getLog());
}