2017-07-17 65 views
0


我想在LibGDX 1.6.1中设置SpriteBatch的着色器。 问题是着色器不能编译。

顶点着色器:LibGDX - ShaderProgram不会编译

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 :分配不兼容的类型“。编译状态是错误的。这里有什么问题?

回答

0

我使用1.9.61.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()); 
} 
+1

感谢时, ' shaderProgram.pedantic = false'工作:) – mrdlink