2012-04-12 122 views
0

我初始化分辨率爲1000x1000的引擎,並希望將整個場景保存在文件中。 如果我使用ScreenCapture類截圖,圖片的最大分辨率是800x480(因爲我的設備(htc慾望)是800x480,並且屏幕上沒有更多像素是不可能的)。但場景更大,也許有一種方法可以遍歷場景中的所有像素並保存1000x1000的圖片?android andengine截圖場景

我試過下面的代碼從渲染紋理保存圖片:

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

       } 

     }; 
} 

回答

1

你不能拿的是不是正在呈現什麼樣的截圖!

但使用GLES2分支的時候,你可以渲染場景到渲染紋理,可以是任意大小的。這個例子應該有所幫助:https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/MotionStreakExample.java

+0

我試過這個樣本,但不能瞭解如何通過按下按鈕整個場景保存。有一個getBitmap(GLState),我試圖保存GLState並將RenderTexture的位圖寫入文件。 – dilix 2012-04-13 14:00:43