问题?如何解决在绘制带透明度的3D模型时候,深度和透明度混合之间的矛盾问题。
第一种方法:
采取透明度测试,在glsl里面,先开启透明度测试只通过不透明的部分,然后再绘制绘制透明的部分即可。
public void draw (Batch batch, float parentAlpha) {
batch.flush();
batch.end();
Gdx.gl.glDisable(GL20.GL_BLEND);
Gdx.gl.glDepthMask(true);
Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);
matrix4.idt().set(getStage().getCamera().combined);
if (isEnableRatate) {
rotateAxisAngle(matrix4, xToAngle(deltaX), xToAngle(deltaY), 0);
} else {
deltaX = 0;
deltaY = 0;
}
shader.begin();
shader.setUniformMatrix("u_projTrans", matrix4);
shader.setUniformi("alphatest", 1);//glsl实现开启透明度测试
this.texture.bind();
glCircle.mesh.render(this.shader, GL20.GL_TRIANGLE_STRIP,0,glCircle.getIndexCount());
Gdx.gl.glEnable(GL20.GL_BLEND);