私は Android 開発者で、LibGDX を使用して最初のゲームを構築しています。たくさん読んだ後でも、まだ理解できないことが 1 つあります。
最高解像度2560x1440(ベクター画像ではなく醜い拡大を防ぐため)のために、1セットの画像が必要であることを認識しています。
私は TexturePacker を使用して画像をパックし、線形線形を使用して最大品質を取得しています:
TexturePacker.Settings settings = new TexturePacker.Settings();
settings.filterMin = Texture.TextureFilter.Linear;
settings.filterMag = Texture.TextureFilter.Linear;
settings.maxWidth = 4096;
settings.maxHeight = 2048;
TexturePacker.process(settings, inputDir, outputDir, packFileName);
いくつかのSOで推奨されているように、カメラを固定メーターに設定し、すべてのPPMのものを避けました。Screen の C'TOR より:
mCamera = new OrthographicCamera();
mCamera.viewportWidth = 25.6f; ; // 2560 / 100
mCamera.viewportHeight = 14.4f ; // 1440 / 100
mCamera.position.set(mCamera.viewportWidth / 2, mCamera.viewportHeight / 2, 0f);
mCamera.update();
ご覧のとおり、1 メートル = 100 ピクセルで作業することにしました。
これは、スプライトを 1/100 サイズで描画する必要があることを意味します。これは、ここで行っています。
TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("images/pack.atlas"));
mImage = atlas.createSprite("image"));
mImage.setSize(mImage.getWidth() / 100 , mImage.getHeight() / 100);
これは機能し、画像は意図したとおりに表示されます。しかし、彼らは地獄のように歪んでいます!完全に丸い画像は、エッジがピクセル化されて丸く見えません。
だから、私の質問は次のとおりです。
- これはベストプラクティスですか、それとも別の方法で作業する必要がありますか?
- 最高品質の画像だけを持っているのは正しいですか?
- 歪みは、私のコードが実際にスプライトを縮小し、どういうわけか libgdx が再び拡大して品質を損なったことを意味しますか?
ありがとう!
EDIT
@ Tenfour04の回答を(1)と(2)に適応させます。
(3) に関しては、問題は Genymotion :( 、ゲームをピクセル化することです。実際のデバイスでいくつかの解像度でテストしましたが、完璧に見えます。