【发布时间】:2013-08-04 07:27:56
【问题描述】:
我正在尝试在 Libgdx 中与舞台一起渲染纹理网格。当我将stage.draw 放在mesh.render() 之上时,我在渲染纹理时遇到问题。
案例 1:
public void render(float delta) {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glEnable(GL10.GL_TEXTURE_2D);
stage.act(delta);
stage.draw();
texture.bind();
mesh.render(GL10.GL_TRIANGLES, 0, 3);
}
// -- This is in my create method:
mesh = new Mesh(true, 3, 3,
new VertexAttribute(Usage.Position, 3, "a_position"),
new VertexAttribute(Usage.ColorPacked, 4, "a_color"),
new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoords"));
mesh.setVertices(new float[] { 50, 50, 0,Color.toFloatBits(255, 0, 0, 255),0,1,
50, 500, 0,Color.toFloatBits(0, 255, 0, 255),0,0,
500, 50, 0, Color.toFloatBits(0, 0, 255, 255),1,1 });
mesh.setIndices(new short[] { 0, 1, 2 });
在上述情况下,我无法渲染纹理,但能够渲染渐变三角形。
案例 2:
public void render(float delta) {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glEnable(GL10.GL_TEXTURE_2D);
texture.bind();
mesh.render(GL10.GL_TRIANGLES, 0, 3);
stage.act(delta);
stage.draw();
}
在这种情况下,我能够在三角形上正确渲染纹理。
我的问题:
- 虽然我可以画三角形,为什么
stage.draw()和mesh.render()的顺序会影响纹理。 - 如何在 actor 的
draw方法中绘制带有纹理的网格?
【问题讨论】: