有没有办法用渐变填充小溪?我发现此选项适用于矩形,但不适用于圆形。
类似
shapeRenderer.filledRect(x, y, width, height, lightBlue, lightBlue, darkBlue, darkBlue);
但要圈出来。
最好只填充渐变圆的边界(确切地说,我需要在圆内加一个孔-像甜甜圈。但是如果没有这样的选择,我可以在该圆上绘制另一个圆) )。
图像不是一种选择,它将有很多不同的颜色,甚至可能随时间变化。
答案 0 :(得分:1)
自从我以为这是解决您的问题和好消息的方法以来,我一直在寻找掩饰。我终于为您提供了一个解决方案,希望它将对您和其他人有用。我在这里Masking Test by mattdesl都归功于他
private ShapeRenderer shapeRenderer;
@Override
public void create() {
shapeRenderer = new ShapeRenderer();
}
@Override
public void render() {
//1. clear screen
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//2. clear our depth buffer with 1.0
Gdx.gl.glClearDepthf(1f);
Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
//3. set the function to LESS
Gdx.gl.glDepthFunc(GL20.GL_LESS);
//4. enable depth writing
Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);
//5. Enable depth writing, disable RGBA color writing
Gdx.gl.glDepthMask(true);
Gdx.gl.glColorMask(false, false, false, false);
///////////// Draw mask shape(s)
//6. render your primitive shapes
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.setColor(1f, 0f, 0f, 0.5f);
shapeRenderer.circle(50, 50, 50);
shapeRenderer.setColor(0f, 1f, 0f, 0.5f);
shapeRenderer.end();
///////////// Draw sprite(s) to be masked
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
Gdx.gl.glColorMask(true, true, true, true);
Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);
Gdx.gl.glDepthFunc(GL20.GL_EQUAL);
shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
shapeRenderer.rect(0, 0, 100, 100, Color.RED, Color.RED, Color.BLUE, Color.BLUE);
shapeRenderer.end();
}
请记住,这也适用于Sprites
渲染的Textures
,TextureRegions
和SpriteBatch
!