0
在libgdx中,我加載了一個着色器,並且想讓我的Stage對象使用該着色器進行繪製。我試着將SpriteBatch的着色器設置爲我的着色器,然後將Stage的Sprite批量設置爲該批次,但它顯示爲黑屏。爲什麼不這項工作:Libgdx着色器在舞臺?
ShaderProgram shader = new ShaderProgram(Gdx.files.internal("shader.vert"), Gdx.files.internal("shader.frag"));
SpriteBatch batch = new SpriteBatch();
batch.setShader(shader);
Stage stage = new Stage(new StretchViewport(768, 576), batch);
...
stage.act();
shader.begin();
stage.draw();
shader.end();
我着色器看起來像:
shader.vert
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord;
uniform mat4 u_projTrans;
varying vec4 v_color;
varying vec2 v_texCoords;
void main()
{
v_color = a_color;
v_color.a = v_color.a * (256.0/255.0);
v_texCoords = a_texCoord + 0;
gl_Position = u_projTrans * a_position;
}
shader.frag
#ifdef GL_ES
#define LOWP lowp
precision mediump float;
#else
#define LOWP
#endif
varying LOWP vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
void main()
{
gl_FragColor = v_color * texture2D(u_texture, v_texCoords);
}
它似乎只與一個工作質地。其他紋理不會呈現。而且,使紋理強度爲2並沒有什麼區別。
首先,我的代碼與我所提到的相同,但我錯誤地寫了它,我猜。開始和結束沒有任何區別,當我刪除它們,但我會嘗試改變它到a_texCoord0 – name 2014-09-28 02:09:27
是啊改變'a_texCoord'到'a_texCoord0'做了竅門。我不知道爲什麼,但我使用的教程是這樣的,但現在它的工作非常感謝 – name 2014-09-28 02:11:41