Code example for EGL10

Methods: eglChooseConfig, eglCreateContext, eglCreateWindowSurface, eglGetDisplay, eglInitialize, eglMakeCurrent, eglSwapBuffers

0
 
        swapBuffers(); 
    } 
 
    public void swapBuffers() { 
        egl.eglSwapBuffers(eglDisplay, eglSurface);
    } 
 
    /** 
     * ウィンドウ幅を取得。 
     * @return 
     */ 
    public int getWindowWidth() { 
        return windowWidth;
    } 
 
    /** 
     * ウィンドウ高を取得。 
     * @return 
     */ 
    public int getWindowHeight() { 
        return windowHeight;
    } 
 
    /** 
     * 描画対象のholder。 
     */ 
    private SurfaceHolder holder;
 
    /** 
     * EGLインターフェース。 
     */ 
    private EGL10 egl;
 
    /** 
     * GLコンテキスト。 
     */ 
    private EGLContext eglContext = null;
    /** 
     * ディスプレイ。 
     */ 
    private EGLDisplay eglDisplay = null;
    /** 
     * サーフェイス。 
     */ 
    private EGLSurface eglSurface = null;
 
    /** 
     * コンフィグ情報。 
     */ 
    private EGLConfig eglConfig = null;
 
    /** 
     * GL用インターフェース。 
     */ 
    protected GL10 gl10 = null;
 
    /** 
     * 描画先サーフェイスの幅・高さ 
     */ 
    private int windowWidth = -1, windowHeight = -1;
 
    /** 
     * OpenGL初期化処理を行う。 
     */ 
    public void initializeGL() { 
        egl = (EGL10) EGLContext.getEGL();
 
        //! 描画先ディスプレイ確保 
        eglDisplay = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
 
        //! EGL初期化。 
        //! ここでGLESのバージョンを取得できるが、ES1.0が必ず帰ってくるようである。 
        { 
            int[] version = { -1, -1 };
            if (!egl.eglInitialize(eglDisplay, version)) {
                log("!eglInitialize"); 
                return; 
            } 
        } 
 
        //! コンフィグ取得 
        { 
            EGLConfig[] configs = new EGLConfig[1];
            int[] num = new int[1];
 
            //! この配列でGLの性能を指定する。 
            //! ディスプレイの色深度、Z深度もここで指定するが、 
            //! 基本的に2D描画する場合はデフォルトのままでも特に問題ない。 
            //! specに対応していない値を入れても初期化が失敗する。 
            int[] spec = { EGL10.EGL_NONE //! 終端にはEGL_NONEを入れる
            }; 
            if (!egl.eglChooseConfig(eglDisplay, spec, configs, 1, num)) {
                log("!eglChooseConfig"); 
                return; 
            } 
 
            eglConfig = configs[0];
        } 
 
        //! レンダリングコンテキスト作成 
        { 
            //レンダリングコンテキスト作成 
            eglContext = egl.eglCreateContext(eglDisplay, eglConfig, EGL10.EGL_NO_CONTEXT, null);
            if (eglContext == EGL10.EGL_NO_CONTEXT) {
                log("glContext == EGL10.EGL_NO_CONTEXT"); 
                return; 
            } 
        } 
        //! 描画先サーフェイスを作成する 
        { 
            //! SurfaceHolderに結びつける 
            eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig, holder, null);
 
            if (eglSurface == EGL10.EGL_NO_SURFACE) {
                log("glSurface == EGL10.EGL_NO_SURFACE"); 
                return; 
            } 
        } 
 
        //! GLESインターフェース取得 
        { 
            gl10 = (GL10) eglContext.getGL();
        } 
 
        //! サーフェイスとコンテキストを結びつける 
        { 
            if (!egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext)) {
                log("!eglMakeCurrent"); 
                return; 
            } 
        }