0

andengine を使用して Android で 16 ビット スタイルの RPG を作成しようとしていますが、大きなハードルに直面しています。これは、テキストとスプライトの問題です。私の問題があるフォーラムへのリンクは次とおりです。テキストとスプライトの両方のテクスチャ オプションとして Nearest を使用しています。スプライトはテクスチャ パッカー経由でアクセスされ、テキストは以下のようなコードを使用して作成されます

final ITexture mFontInfoTexture = new BitmapTextureAtlas(pContext.getTextureManager(), 256, 256, TextureOptions.NEAREST);

mFontInfo = FontFactory.createFromAsset(pContext.getFontManager(), mFontInfoTexture, pContext.getAssets() , "LongPixelFont.ttf", 18.0f, false, Color.BLACK);
mFontInfo.load();

スプライトを別の方法でスケーリングし、テクスチャ オプションを Linear に変更し、スプライトの位置をシフトしようとしましたが、実際には何も機能しません。どんな洞察も大歓迎です。

更新 1:

これは、アプリの解像度を定義するために使用するコードです。

    // Initializes the Engine and sets the height and width.
    MainActivity.mMainCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
    //Sets the engine options
    EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), MainActivity.mMainCamera);
    //Forces the screen to go into landscape
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

更新 2:

変形はスケーリング(スプライトの場合)によって引き起こされているようです。int でスケーリングするときは変形に気付きませんでしたが、分数でスケーリングすると変形がありました。奇数の小数 (つまり 2.5) でスケーリングすると、変形がより顕著になりました。また、ピクセルが変形して見える範囲があるようです。私の場合、2x 未満のものは変形して見えますが、2 より大きい int は問題なく見えます。

4

2 に答える 2

2

変形が比率解決ポリシーによって引き起こされる可能性があると考えましたか? ゲームのアスペクト比がデバイスのアスペクト比と同じでない場合、一部の解像度ポリシーは GL サーフェスを拡大して画面全体を埋めます。これにより、間違いなく正方形以外のピクセルが生成されます。

Engine を構築するときに RatioResolutionPolicy を使用してみて、ピクセルが正方形ではないかどうかを確認してください。現在、夜のゲームの側面に黒いバーが表示される場合がありますが、それが発生した場合、問題が何であるかがわかり、どちらが良いかがわかります。

次に、アプリの全画面サイズを取得し、比率解像度ポリシーを完全に適合させる方法を考え出すことができます。

==更新==

上記のコメントに基づいて、あなたの質問は次のようになります: https://gamedev.stackexchange.com/questions/19075/how-can-i-make-opengl-textures-scale-without-becoming-blurry

openGL で使用されるスケール モードを制御しようとしているようです。残念ながら、これらの設定が Andengine のどこにあるかわかりません。他の誰かが知っていますか?

于 2012-07-24T18:02:35.530 に答える
0

pAntiAlias オプションを false から true に変更してみてください。

mFontInfo = FontFactory.createFromAsset(pContext.getFontManager(), mFontInfoTexture, pContext.getAssets() , "LongPixelFont.ttf", 18.0f, true, Color.BLACK);

テキストに役立つはずです。

于 2012-07-24T17:21:39.777 に答える