LibGDXツールで使用されるTexturePacker



Texturepacker Used Libgdx Tools



OpenGLでは、テクスチャは常に作成されてから描画されます。テクスチャのバインドは比較的高価であるため、多数の小さな画像を1つの大きな画像にまとめて保存し、テクスチャを1回バインドしてから、その小さな部分を複数回描画します。 。 LibgdxにはTexturePackerクラスがあります。これは、多くの小さな画像を大きな画像にラップするコマンドラインアプリケーションです。 TextureAtlasクラスを使用してアプリケーション内の名前を簡単に参照できるように、小さい画像の場所を保存します。
TexturePackerは複数のパッケージングアルゴリズムを使用しますが、最も重要なのは最大の長方形アルゴリズムに基づいており、最も効率的な結果を選択します。

TexturePackerの実行

グラフィカルインターフェイスツールを使用してリソースをパッケージ化する場合は、こちらをダウンロードしてください ツール
TexturePackerクラスはgdx-toolsプロジェクトにあり、Eclipseを介して実行できます。



import com.badlogic.gdx.tools.texturepacker.TexturePacker public class MyPacker { public static void main (String[] args) throws Exception { TexturePacker.process(inputDir, outputDir, packFileName) } }

Gradleでビルドしても、TexturePackerクラスが見つからない場合は、 build.gradle gdx-tools依存関係のサポートを追加します。

Gradleファイルに次の更新を行うと、texturePackerをgradleタスクとして実行することもできます。まず、build.gradleを更新する必要があります。



buildscript { dependencies { // ... other dependencies trimmed ... classpath 'com.badlogicgames.gdx:gdx-tools:$gdxVersion' } }

特定のバージョンを使用する場合は、$ gdxVersion変数を選択したバージョンに置き換えるだけです。

// Store the parameters you want to pass the texturePacker here... project.ext.texturePacker = [ 'android/assets/input/path/', 'android/assets/output/path/', 'atlas_name' ] // Import the texture packer import com.badlogic.gdx.tools.texturepacker.TexturePacker // Add a new task that packs the textures for you task texturePacker << { if (project.ext.has('texturePacker')) { logger.info 'Calling TexturePacker: '+texturePacker TexturePacker.process(texturePacker[0], texturePacker[1], texturePacker[2]) } }

TexturePackerは、アプリケーションのすべての画像を一度にパッケージ化できます。ディレクトリを指定すると、イメージファイルを再帰的にスキャンします。 TexturePackerが検出した画像カタログごとに、画像をページと呼ばれるより大きなテクスチャに解凍します。ディレクトリ内の画像が1ページにすべての画像を保持できない場合、複数のページ(ページ)が使用されます。
最終的に、すべての画像が1つ以上のページページに表示されます。すべての画像が1つのページに配置されている場合は、サブディレクトリを使用しないでください。ページが1つしかないため、アプリケーションはテクスチャバインディングを1回だけ実行します。それ以外の場合は、サブディレクトリを使用して、テクスチャバインディング用に関連する画像を分離できます。たとえば、アプリケーションがすべてのゲーム関連の画像をメニュー画像とは異なるディレクトリに配置して、メニューテクスチャのみに関連するページがゲーム関連のテクスチャ画像をロードする必要がないようにしたい場合があります。