0

エンジンを解像度 1000x1000 で初期化し、シーン全体をファイルに保存したいと考えています。ScreenCapture クラスでスクリーンショットを撮る場合、画像の最大解像度は 800x480 です (私のデバイス (htc の欲求) は 800x480 であり、画面からより多くのピクセルを取得することは不可能であるため)。しかし、シーンはより大きく、おそらくシーン上のすべてのピクセルを反復処理して 1000x1000 の画像を保存する方法がありますか?

RenderTexture から画像を保存するために、次のコードを試しました。

@Override
public Engine onCreateEngine(EngineOptions pEngineOptions)
{
        return new Engine(pEngineOptions) {

            private boolean mRenderTextureInitialized;

            int r[];

            private  RenderTexture mRenderTextures;

            @Override
            public void onDrawFrame(final GLState pGLState) throws InterruptedException {
                final boolean firstFrame = !this.mRenderTextureInitialized;

                if(firstFrame) {
                    this.initRenderTextures(pGLState);
                    this.mRenderTextureInitialized = true;
                }
                this.mRenderTextures.begin(pGLState);

                super.onDrawFrame(pGLState);

                this.mRenderTextures.end(pGLState);

                if (needToSave)
                {
                    needToSave = false;
                    final String location = SAVED_PATH + "/Screen_" + System.currentTimeMillis() + ".png";
                    FSHelper.saveBitmapToFile(mRenderTextures.getBitmap(pGLState), location);
                }


            }

            private void initRenderTextures(final GLState pGLState) {
                final int surfaceWidth = this.mCamera.getSurfaceWidth();
                final int surfaceHeight = this.mCamera.getSurfaceHeight();


                    this.mRenderTextures = new RenderTexture(EnchantActivity.this.getTextureManager(), surfaceWidth, surfaceHeight);
                    this.mRenderTextures.init(pGLState);

                }

        };
}
4

1 に答える 1

1

レンダリングされていないもののスクリーンショットを撮ることはできません!

しかし、GLES2 ブランチを使用すると、シーンを任意のサイズの RenderTexture にレンダリングできます。この例が役立ちます: https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/MotionStreakExample.java

于 2012-04-12T18:55:33.307 に答える