サイトのトップへ戻る

AndEngineドキュメント 日本語訳

ディザリング - グラデーション品質を向上させる。 

まず、ディザリングが何なのかについて説明させてください。ディザリングでは画像にドットを書き加えて、全体な品質を向上させます。 それを理解するために、以下二つの画像を見てください。 グラデーション背景を表示できるように、あなたのアプリでこの画像を使用したいとしましょう。 (画像はTeturePacker のウェブサイトから取得します)
Picture
しかしあなたの端末では、以下表示結果のようにはるかに低いグラデーション品質で表示されるでしょう: 左の画像は NO DITHERING設定で、右の画像は DITHERING ENABLED設定です。
Picture
        ディザリングなしのグラデーション画像。
Picture
             ディザリングありのグラデーション画像。

You can expect such quality issues while using gradients, but also, while using lower quality texture type RGBA 4444 instead of high quality one RGBA 8888.結局どうすればいいのかって? 低い品質のテクスチャタイプを使用してディザリングを有効にすることで、メモリ使用量を半分カットすることができます! それでは、特定のテンティティのディザリングを有効にする方法を説明しましょう。



1. 特定の Entityでディザリングを有効にする:
final Sprite sprite = new Sprite(pX, pY, pTextureRegion, pVertexBufferObject)
{
    @Override
    protected void preDraw(final GLState pGLState, final Camera pCamera)
    {
        super.preDraw(pGLState, pCamera);
        pGLState.enableDither();
    }
};

ご覧の通り、単にpreDraw メソッドを上書きしてディザリングを有効にしているだけです。この簡単な方法で、品質を大幅に向上できます。既定では、engine optionsでアプリケーション全体のディザリングを有効にすることもできます。



2. エンジン全体のディザリングを有効にする:
public EngineOptions onCreateEngineOptions()
{
    camera = new GameCamera(0, 0, 800, 480);
    EngineOptions engineOptions = new EngineOptions(...);
    engineOptions.getRenderOptions().setDithering(true);
    return engineOptions;
}

engine optionsを作成する際に、render optionsを取得してディザリングを有効にすることができます。




エンジェル戦記