【问题标题】:libGDX cut out areas (custom, not rectangles) from ImageslibGDX 从图像中切出区域(自定义,而不是矩形)
【发布时间】:2015-08-20 20:32:16
【问题描述】:

我知道如何从图像中剪切出矩形。但是我想剪一个圆圈或者自定义蒙版。

在 Google Play 的某些游戏(黑暗重生)中有这个标志。 这是怎么做到的?

    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);
        }
    }

【问题讨论】:

    标签: image libgdx scene2d


    【解决方案1】:

    在 Libgdx(或 OpenGL)中没有直接的方法来制作非矩形蒙版。不过,还有很多替代技术。

    根据您的要求,只需在软件中进行遮罩(生成具有适当像素集的新像素图)可能就足够了。

    另一种方法是使用深度缓冲区来屏蔽纹理元素。将深度缓冲区清除为 1.0,使用 0.0 在缓冲区中绘制形状,然后使用深度测试渲染纹理,因此仅渲染与深度缓冲区元素 0.0 对应的像素。

    有关更多详细信息、其他选项和示例,请参阅 mattdesl 的 LibGDX Masking wiki:https://github.com/mattdesl/lwjgl-basics/wiki/LibGDX-Masking#complex-masks

    【讨论】:

    • 感谢您的惠顾。我会试试的。
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多