2017-07-17 63 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