2015-06-05 59 views
0

我知道如何將矩形切出圖像。但我想剪出一個圈或一個自定義的面具。libGDX從圖像中切出區域(自定義,不是矩形)

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

回答

0

沒有直接的方式在Libgdx(或OpenGL)中做非矩形蒙版。不過,還有很多替代技術。

根據您的要求,只需在軟件中進行遮罩(生成具有適當像素集的新Pixmap)可能就足夠了。

另一種方法是使用深度緩衝區來遮蓋紋理元素。將深度緩衝區清除爲1.0,在緩衝區中繪製0.0形狀,然後使用深度測試渲染紋理,因此只渲染與深度緩衝區元素0.0對應的像素。

見mattdesl的LibGDX屏蔽維基瞭解更多詳情,其他選項,例:https://github.com/mattdesl/lwjgl-basics/wiki/LibGDX-Masking#complex-masks

+0

感謝awser。我會嘗試。 –