サイトのトップへ戻る

libGDX ドキュメント 日本語訳

サイト内検索

ScissorStackを使ったクリッピング処理



クリッピング処理

Rectangle scissors = new Rectangle();
Rectangle clipBounds = new Rectangle(x,y,w,h);
ScissorStack.calculateScissors(camera, spriteBatch.getTransformMatrix(), clipBounds, scissors);
ScissorStack.pushScissors(scissors);
spriteBatch.draw(...);
spriteBatch.flush();
ScissorStack.popScissors();

上記では描写できる領域を"clipBounds"の範囲内に制限しています。 切り抜きを行うよりも前にキューに格納されたdraw 命令が、有効化された切り抜き領域内で flushされるのを防ぐために、 切り抜き領域を有効化する前に( ScissorStack.pushScissorsを実行する前に)spriteBatch のflush メソッドやend メソッドを実行する必要もあります。

また、ScissorStack.pushScissorsを使って複数のRectangleを追加することも可能です。複数あるRectangleの全ての範囲内にあるspriteのピクセルだけが描写されます。