Проблема инициализации GLview в Android

1

Я написал следующий код для инициализации GLview в android. Я относительно новичок в разработке приложений для Android. Я хочу использовать код для получения экрана.

Вот фрагмент кода, который я написал:

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 ответ

1
Лучший ответ

Класс GLSurfaceView обеспечивает простой способ использования OpenGL. Там учебник здесь

  • 1
    Спасибо Райанм за ваше предложение. Это действительно полезно. Но у меня все еще есть проблема, чтобы понять, как написать код, используя интерфейс GLSurface.Renderer. Если вы можете помочь мне в этом, это будет большая помощь с вашей стороны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню