在 libgdx 中绘制透明的 ShapeRenderer

2022-09-01 00:48:00

我使用ShapeRenderer绘制了一个填充圆,现在我想将此圆绘制为透明圆。我使用以下代码来执行此操作:但是圆圈不是透明的。另外,我检查了libgdx API,从wiki上说,需要创建CameraStrategy。以前有人遇到过类似的问题吗?如果是这样,请给我一些线索。提前致谢。

 Gdx.gl.glEnable(GL10.GL_BLEND);
      Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
      drawFilledCircle();
      Gdx.gl.glDisable(GL10.GL_BLEND);

private void drawFilledCircle(){

   shapeRenderer.setProjectionMatrix(camera.combined);
   shapeRenderer.begin(ShapeType.FilledCircle);
   shapeRenderer.setColor(new Color(0, 1, 0, 1));
   shapeRenderer.filledCircle(470, 45, 10);
   shapeRenderer.end();

}

答案 1

在这种情况下,下面的代码对我有用,也许它会帮助其他人:

Gdx.gl.glEnable(GL10.GL_BLEND);
Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
shapeRenderer.setProjectionMatrix(camera.combined);
shapeRenderer.begin(ShapeType.FilledCircle);
shapeRenderer.setColor(new Color(0, 1, 0, 0.5f));
shapeRenderer.filledCircle(470, 45, 10);
shapeRenderer.end();
Gdx.gl.glDisable(GL10.GL_BLEND);

答案 2

首先,我们需要启用混合:

Gdx.gl.glEnable(GL10.GL_BLEND);

并确保不要在该行代码和代码行之间调用和。我不知道为什么,但这就是我的情况SpriteBatch.begin()SpriteBatch.end()Shaperender.drawSomething()


推荐