在 ShapeRenderer 上绘制透明纹理
Draw transparent texture over ShapeRenderer
当我在 ShapeRenderer 上绘制具有透明度(在文件中)的纹理时,任何形状都没有更新。当我设置 batch.setColor(1f, 1f, 1f, 0.5f)
时,结果几乎相同:我看到卡住的形状具有 50% 的透明度,并且还在下面看到相同的动画形状。
我试过使用 Gdx.gl.glEnable(GL20.GL_BLEND)
但没有用。
shape.begin(ShapeRenderer.ShapeType.Filled);
shape.setColor(0f / 255f, 7f / 255f, 32f / 255f, 1f);
shape.rect(0,0, width, height);
for(Star star : stars) {
star.render(shape);
star.update(dx, dy, delta);
}
shape.end();
batch.begin();
batch.draw(overlay, 0, 0, width, height);
app.batch.end();
Star
class:
里面的render方法
public void render(ShapeRenderer shape) {
r = (position.z / max_depth);
g = (position.z / max_depth);
b = (position.z / max_depth);
a = 1.f;
if(r < 0) r = 0;
if(g < 7f / 255f) g = 7f / 255f;
if (b < 32f / 255f) b = 32f / 255f
float radius = (position.z / max_depth) * maxRadius;
if(radius < 1) radius = 1;
shape.setColor(r, g, b, a);
shape.circle(position.x, position.y, radius);
}
您需要将 BlendFunction 设置为根据您想要的混合输出进行批处理。默认情况下启用 GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA
所以尝试更改为:
batch.setBlendFunction(GL20.GL_SRC_ALPHA,GL20.GL_DST_COLOR);
可能这不符合您的要求,请根据您的要求选择合适的。
当我在 ShapeRenderer 上绘制具有透明度(在文件中)的纹理时,任何形状都没有更新。当我设置 batch.setColor(1f, 1f, 1f, 0.5f)
时,结果几乎相同:我看到卡住的形状具有 50% 的透明度,并且还在下面看到相同的动画形状。
我试过使用 Gdx.gl.glEnable(GL20.GL_BLEND)
但没有用。
shape.begin(ShapeRenderer.ShapeType.Filled);
shape.setColor(0f / 255f, 7f / 255f, 32f / 255f, 1f);
shape.rect(0,0, width, height);
for(Star star : stars) {
star.render(shape);
star.update(dx, dy, delta);
}
shape.end();
batch.begin();
batch.draw(overlay, 0, 0, width, height);
app.batch.end();
Star
class:
public void render(ShapeRenderer shape) {
r = (position.z / max_depth);
g = (position.z / max_depth);
b = (position.z / max_depth);
a = 1.f;
if(r < 0) r = 0;
if(g < 7f / 255f) g = 7f / 255f;
if (b < 32f / 255f) b = 32f / 255f
float radius = (position.z / max_depth) * maxRadius;
if(radius < 1) radius = 1;
shape.setColor(r, g, b, a);
shape.circle(position.x, position.y, radius);
}
您需要将 BlendFunction 设置为根据您想要的混合输出进行批处理。默认情况下启用 GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA
所以尝试更改为:
batch.setBlendFunction(GL20.GL_SRC_ALPHA,GL20.GL_DST_COLOR);
可能这不符合您的要求,请根据您的要求选择合适的。