AndroidでOpenGLを使う(GLES1.x)

Androidアプリでは、3D描画を行う為のライブラリとしてOpenGL ESを利用する事ができる。

使用するパッケージは以下のような感じ。

javax.microedition.khronos.opengles

javax.microedition.khronos.egl

android.opengl



GLSurfaceViewクラス

OpenGLを管理してくれるView。

描画はUIスレッドとは独立した専用スレッドで行われる。

描画に関する処理はGLSurfaceView.Rendererインターフェースが担う事になる。



以下、画面を青くするサンプル。

GLSurfaceView.Rendererを実装するクラスを作成。

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView;

public class GLTestRenderer implements GLSurfaceView.Renderer {

        @Override
        public void onSurfaceCreated( GL10 gl, EGLConfig config ) {
        }

        @Override
        public void onSurfaceChanged( GL10 gl, int w, int h ) {
        }

        @Override
        public void onDrawFrame( GL10 gl ) {
                gl.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
                gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        }
}


レンダラーをGLSurfaceViewへセットし、

GLSurfaceViewをActivityのカレントビューへセット。

import android.app.Activity;
import android.os.Bundle;
import android.opengl.GLSurfaceView;


public class MainActivity extends Activity {
    private GLTestRenderer  mMyRenderer;
    private GLSurfaceView   mGLSurfaceView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mMyRenderer    = new GLTestRenderer();
        mGLSurfaceView = new GLSurfaceView(this);
        mGLSurfaceView.setRenderer(mMyRenderer);

        setContentView(mGLSurfaceView);
    }
}