2
我想用libGDX中的Mesh類做一個簡單的漸變。這應該是一個包含漸變的繪製矩形,但問題是矩形是完全黑色的!Libgdx - 黑屏神祕
我的代碼:
public class HomeScreen extends
ScreenAdapter {
OrthographicCamera camera;
Mesh mesh;
ShaderProgram shader;
public HomeScreen() {
Logger.message("HomeScreen()", "^");
this.camera = new OrthographicCamera(2, 2);
this.mesh = new Mesh(false, 4, 4,
new VertexAttribute(Usage.Position, 3, ShaderProgram.POSITION_ATTRIBUTE),
new VertexAttribute(Usage.ColorPacked, 4, ShaderProgram.COLOR_ATTRIBUTE)
);
this.shader = SpriteBatch.createDefaultShader();
this.camera.position.set(0, 0, 0);
this.camera.update();
this.mesh.setVertices(new float[] {
-0.5f, -0.5f, 0, Color.BLUE.toFloatBits(),
-0.5f, 0.5f, 0, Color.RED.toFloatBits(),
0.5f, 0.5f, 0, Color.RED.toFloatBits(),
0.5f, -0.5f, 0, Color.BLUE.toFloatBits(),
});
this.mesh.setIndices(new short[] {
0, 1, 3, 2
});
Logger.message("HomeScreen()", "$");
}
@Override
public void dispose() {
Logger.message("HomeScreen.dipose()", "^");
this.mesh.dispose();
this.shader.dispose();
Logger.message("HomeScreen.dipose()", "$");
}
@Override
public void render(final float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
this.shader.begin();
this.shader.setUniformMatrix("u_projTrans", this.camera.combined);
this.mesh.render(this.shader, GL20.GL_TRIANGLE_STRIP);
this.shader.end();
}
}
結果:
任何想法?
查看默認的spritebatch着色器,可以看到該着色器需要一個紋理並計算最終顏色爲'gl_FragColor = v_color * texture2D(u_texture,v_texCoords);'。由於您沒有提供紋理,因此您最有可能將v_color乘以零向量。 – BDL 2014-11-25 11:27:26
@BDL我寫了我自己的着色器,沒有紋理部分,實際上它的工作。謝謝 – Flawyte 2014-11-25 11:41:55
@BDL你可以發表這個答案,所以我可以接受嗎? – Flawyte 2014-11-25 11:42:25