2012-04-12 8 views
0

Ich initialisiere Engine mit der Auflösung 1000x1000 und möchte die ganze Szene in Datei speichern. Wenn ich Screenshots mit der ScreenCapture-Klasse mache, ist die maximale Auflösung des Bildes 800x480 (weil mein Gerät (htc desire) 800x480 ist und es unmöglich ist, mehr Pixel vom Bildschirm zu haben). Aber die Szene ist größer, vielleicht gibt es eine Möglichkeit, durch alle Pixel in der Szene zu iterieren und 1000x1000 Bild zu speichern?android andengine Screenshot der Szene

Ich habe den folgenden Code versucht Bild von RenderTexture zu speichern:

@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); 

       } 

     }; 
} 

Antwort

1

Sie nicht einen Screenshot von dem, was gemacht wird, nehmen nicht zu werden!

Wenn Sie jedoch den GLES2-Zweig verwenden, können Sie Ihre Szene in eine RenderTexture rendern, die eine beliebige Größe haben kann. Dieses Beispiel sollte helfen: https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/MotionStreakExample.java

+0

Ich habe dieses Beispiel versucht, aber kann nicht verstehen, wie Sie die ganze Szene durch Drücken der Taste speichern. Es gibt eine getBitmap (GLState), ich habe versucht, GLState zu speichern und Bitmap von RenderTexture in die Datei zu schreiben. – dilix