我知道如何从图像中剪切出矩形。但我想剪出一个圆圈或一个自定义的面具。
在Google Play的某些游戏(Darkness Reborn)中有此徽标。 这是怎么做到的?
class MyActor extends Actor {
Rectangle scissors = new Rectangle();
Rectangle clipBounds = new Rectangle(0,0,100,100);
Sprite sprite = new Sprite(new Texture(Gdx.files.internal("images/test2.png")));
public MyActor() {
sprite.getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
sprite.setScale(2f);
setBounds(sprite.getX(), sprite.getY(), sprite.getWidth(), sprite.getHeight());
setTouchable(Touchable.enabled);
}
@Override
public void draw(Batch batch, float parentAlpha) {
ScissorStack.calculateScissors(camera, batch.getTransformMatrix(), clipBounds, scissors);
ScissorStack.pushScissors(scissors);
sprite.draw(batch, parentAlpha);
}
}
答案 0 :(得分:0)
在Libgdx(或OpenGL)中没有直接的非矩形掩码方法。但是,有很多替代技术。
根据您的要求,只需在软件中进行屏蔽(使用适当的像素集生成新的Pixmap)就足够了。
另一种方法是使用Depth Buffer来屏蔽纹理元素。将深度缓冲区清除为1.0,使用0.0在缓冲区中绘制形状,然后使用深度测试渲染纹理,这样只渲染与0.0的深度缓冲元素对应的像素。
有关更多详细信息,其他选项和示例,请参阅mattdesl的LibGDX Masking wiki:https://github.com/mattdesl/lwjgl-basics/wiki/LibGDX-Masking#complex-masks