OpenGL ES on Android 初級
最近、AndroidでOpenGL ESを扱い始めた。 まったくの初心者なので、つまづいたところ、気になったところを書き出してみる。
Android.opengl Packageのリファレンス
http://developer.android.com/reference/android/opengl/package-summary.html
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()内では通常
- gl.glClear()による画面消去
- 描画
を行う。<del>glbeginやglendを明示的に呼び出す必要はない。</del>
追記: そもそもglBeginとglEndはglDrawArraysとかを使う1.1では必要ないのね…。