构建打开本教程 - https://code.google.com/p/libgdx/wiki/ProjectionViewportCamera我构建了一个用于生成多边形网格的类。但我无法弄清楚如何渲染半透明度,即使教程中的网格采用带有alpha通道的颜色对象。
我使用squareMesh.render渲染(GL10.GL_TRIANGLE_STRIP,0,4);这是用于初始化网格的代码
if (squareMesh == null) {
squareMesh = new Mesh(true, 4, 4,
new VertexAttribute(Usage.Position, 3, "a_position"),
new VertexAttribute(Usage.ColorPacked, 4, "a_color"));
squareMesh.setVertices(new float[] {
-0.5f, -0.5f, 0, Color.toFloatBits(128, 0, 0, 255),
0.5f, -0.5f, 0, Color.toFloatBits(192, 0, 0, 255),
-0.5f, 0.5f, 0, Color.toFloatBits(192, 0, 0, 255),
0.5f, 0.5f, 0, Color.toFloatBits(255, 0, 0, 255) });
squareMesh.setIndices(new short[] { 0, 1, 2, 3});
}
答案 0 :(得分:2)
许多Libgdx基础结构类都能自动进行混合。如果您自己绘制网格,则可能需要手动打开混合:
Gdx.graphics.getGL10().glEnable(GL10.GL_BLEND); // Or GL20
答案 1 :(得分:1)
我发现 ModelBatch.begin(...)
将通过调用 Gdx.gl.glDisable(GL20.GL_BLEND)
禁用混合。因此,请确保在调用 ModelBatch.begin()
后启用混合。
modelBatch.begin(camera); // resets Blending to false
// enable Blending
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
// draw mesh
mesh.render(shader, GL20.GL_TRIANGLES);
modelBatch.end();
还有一个等效的方法可以在 ModelBatch 中启用混合
modelBatch.getRenderContext().setBlending(true, GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);