OpenGL ES on Android 初級

最近、AndroidOpenGL 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()による画面消去
  • 2. 描画

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

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