2011-01-07 59 views
1

我寫了下面的代碼來初始化android中的GLview。我對android應用程序開發比較陌生。我想使用代碼獲取屏幕截圖。問題在Android中初始化GLview在

下面是一段代碼,我已經寫了:

public class MainActivity extends Activity{ 

    /** Called when the activity is first created. */ 

    private EGL10 egl; 
    private EGLDisplay display; 
    private EGLConfig config; 
    Display disp ; 
    private EGLContext eglContext; 
    private GL10 gl ; 
    private EGLSurface surface; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     // ToDo add your GUI initialization code here   
    setContentView(R.layout.main); 

    disp = getWindowManager().getDefaultDisplay(); 

    egl = (EGL10) EGLContext.getEGL(); 
    display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); 
    int[] ver = new int[2]; 
    egl.eglInitialize(display, ver); 
    int[] configSpec = {EGL10.EGL_NONE}; 
    EGLConfig[] configOut = new EGLConfig[1]; 
    int[] nConfig = new int[1]; 
    egl.eglChooseConfig(display, configSpec, configOut, 1, nConfig); 
    config = configOut[0]; 
    eglContext = egl.eglCreateContext(display, config, EGL10.EGL_NO_CONTEXT, null); 

    SurfaceView view = new SurfaceView(this); 
    setContentView(view); 

     SurfaceHolder holder = view.getHolder(); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL); 
     try{ 
      surface = egl.eglCreateWindowSurface(display,config, holder , null); 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    egl.eglMakeCurrent(display, surface, surface, eglContext); 
    gl = (GL10) eglContext.getGL(); 




    savePNG(0,0,disp.getWidth(), disp.getHeight(),"testpicture.png",gl); 


    } 

但是應用在

 try{ 
      surface = egl.eglCreateWindowSurface(display,config, holder , null); 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

終止這是給異常

IlligalArgument exception: Must use SurfaceHolder or SurfaceView with proper format. not a valid surface. 

請糾正這個問題。

謝謝。

回答

1

GLSurfaceView類提供了一種使用OpenGL的簡單方法。有一個教程here

+1

感謝ryanm您的建議。這真的很有幫助。但是我仍然遇到了一個問題,即如何使用GLSurface.Renderer接口編寫代碼。如果你能幫我解決這個問題,那麼你會得到很大的幫助。 – ujjawal