My blog

Add intelligent tagline here

OpenGL ES on Android 初級

最近、AndroidでOpenGL ESを扱い始めた。 まったくの初心者なので、つまづいたところ、気になったところを書き出してみる。

android.opengl.GLSurfaceViewを使う

Activityでは、GLSurfaceViewを作成し、そこにRendererを設定する。

具体的にはこんな感じで、Activityを継承しているクラスで実装する

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

    glsurfaceview = new GLSurfaceView(this); // GLSurfaceViewの作成
    glsurfaceview.setRenderer(new MyRenderer()); // Rendererの作成と設定
    setContentView(glsurfaceview);    // GLSurfaceViewをViewに設定
}

GLSurfaceView.Renderer

実際の描画処理は、GLSurfaceView.Rendererをimplementsする自前のRendererクラスで実装する。

GLSurfaceView.Rendererには以下の三つのメソッドを実装する

  • void onDrawFrame(GL10 gl)
  • void onSurfaceChanged(GL10 gl, int width, int height)
  • void onSurfaceCreated(GL10 gl, EGLConfig config)

実際の描画処理を行うのは、onDrawFrame()だ。 onDrawFrame()は、なにもしなくても一定時間ごとに呼び出される(みたい)。

onDrawFrame()

onDrawFrame()内では通常

    1. gl.glClear()による画面消去
    1. 描画

を行う。<del>glbeginやglendを明示的に呼び出す必要はない。</del>

追記: そもそもglBeginとglEndはglDrawArraysとかを使う1.1では必要ないのね…。