私は最近数日でAndEngine(GLES2)を試しています。 ExamplesプロジェクトのSpriteExampleに問題があります。 サンプルプロジェクトのSpriteExampleでは、face_box.pngスプライトがきれいで鮮明に見えます。 しかし、同じコードとface_box.pngファイルを自分の別のプロジェクトにコピーすると、スプライトはピクセル化されて見えます。AndEngineのサンプルプロジェクトのスプライトの例です。私自身のプロジェクトにインポートするとピクセル化されています
コードはちょうど同じなので、いくつかの設定で問題があると思いますが、わかりませんでした。
私はGalaxy S2でICSを実行しています。
問題の原因は何ですか?
誰もが疑問に思った場合、これはコードです -
public class AndEngineMapActivity extends SimpleBaseGameActivity implements OnClickListener {
// ===========================================================
// Constants
// ===========================================================
private static final int CAMERA_WIDTH = 800;
private static final int CAMERA_HEIGHT = 480;
// ===========================================================
// Fields
// ===========================================================
private ITexture mTexture;
private ITextureRegion mFaceTextureRegion;
// ===========================================================
// Constructors
// ===========================================================
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public EngineOptions onCreateEngineOptions() {
final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
}
@Override
public void onCreateResources() {
try {
this.mTexture = new BitmapTexture(this.getTextureManager(), new IInputStreamOpener() {
@Override
public InputStream open() throws IOException {
return getAssets().open("gfx/face_box.png");
}
});
this.mTexture.load();
this.mFaceTextureRegion = TextureRegionFactory.extractFromTexture(this.mTexture);
} catch (IOException e) {
Debug.e(e);
}
}
@Override
public Scene onCreateScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());
final Scene scene = new Scene();
scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
/* Calculate the coordinates for the face, so its centered on the camera. */
final float centerX = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth())/2;
final float centerY = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight())/2;
/* Create the face and add it to the scene. */
final Sprite face = new Sprite(centerX, centerY, this.mFaceTextureRegion, this.getVertexBufferObjectManager());
scene.attachChild(face);
return scene;
}
@Override
public void onClick(final ButtonSprite pButtonSprite, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(AndEngineMapActivity.this, "Clicked", Toast.LENGTH_LONG).show();
}
});
}
// ===========================================================
// Methods
// ===========================================================
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}
**更新:**私は
@Override
public void onCreateResources() {
try {
this.mTexture = new BitmapTexture(this.getTextureManager(), new IInputStreamOpener() {
@Override
public InputStream open() throws IOException {
return getAssets().open("gfx/face_box.png");
}
}, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
this.mTexture.load();
this.mFaceTextureRegion = TextureRegionFactory.extractFromTexture(this.mTexture);
} catch (IOException e) {
Debug.e(e);
}
}
とは異なる結果をテクスチャをロードしようとしたJoenEyeのアドバイスに続いて改善され、スマイリー顔の画像が少し良く見えますが、例のプロジェクトほどシャープではありません。
****別の更新:****
これらは私が得る結果の画像です。 - これは、これは私のプロジェクトから1であるオリジナルのサンプルプロジェクト(最良の結果)から1 あるTextureOptions.BILINEAR_PREMULTIPLYALPHA なし これはTextureOptions.BILINEAR_PREMULTIPLYALPHA(現在の結果と私のプロジェクトから一つです 双方向ところで
- 興味深い結果、かつて私はそれでだけ、このクラスで別の空のプロジェクトを作成し、それが完璧に働いたと良く見え
をだから私はそれが設定problのいくつかの種類でなければならないと思います。私自身のプロジェクトで。
これ以上のアイデアを得るのはうれしいですね!
ありがとうございます!
あなたはイメージをロードする奇妙な方法を使用していますが、AndEngineではこれまで見たことがありません。とにかく、適切なTextureOptionsを設定していない可能性があります。私はBitmapTextureのコンストラクタで新しいBitmapTextureAtlas(1024,512、TextureOptions.BILINEAR_PREMULTIPLYALPHA)を実行します。あなたのバージョンのAndEngineは異なるので、あなたの実装は異なるかもしれません。 – JohnEye
ありがとうJohnEye私はBILINEAR_PREMULTIPLYALPHAであなたの助言に従い、結果が改善しました。しかし、例題プロジェクトの同じ例がはるかに鮮明に見えるので、まだ完璧ではありません。私はBilinearやNEARESTなどの他のオプションも試しましたが、Nearestはそれを悪化させました.BilinearはBILINEAR_PREMULTIPLYALPHAのようにしか見えませんでした。他に何ができるの? – Dror