OpenGLメモ
AndroidでOpenGLを使ったゲームアプリを開発中なのですが、毎回OpenGLの使い方を忘れるのでメモ。
OpenGLは学生時代から使ってたけどやっぱり難しいです。
移動・回転
オブジェクトはgl.glTranslatef()とgl.glRotatef()を使って平行移動、回転させる。
それぞれのメソッドは座標系自体を平行移動、回転させるものなので、使う順番に気をつける必要がある。
gl.glPushMatrix()を読んだ後に上記メソッドで座標系を操作することでオブジェクトを動かし、gl.glPopMatrix()で座標系を元に戻す。
隠面消去
gl.glEnable(GL10.GL_DEPTH_TEST)を呼び出す。
描画処理前には、gl.glClear(GL10.GL_DEPTH_BUFFER_BIT)を呼び出して必ずバッファをクリアしておくこと。
バッファクリアのタイミングが描画の途中にあると、重なり順が狂ってしまうので(クリア前後で逆転する)、必ず描画全体の最初でクリアすること。また、描画ルーチンを呼び出すたびにクリアしないとやはり描画がおかしくなる(表示されなくなる)。
できれば初期設定で有効に設定 → 描画ルーチン呼び出しの先頭でバッファクリア
アルファテスト
gl.glEnable(GL10.GL_ALPHA_TEST)で有効にする。
閾値の設定にはgl.glAlphaFunc(int func, float ref)を使う。
例えば、gl.glAlphaFunc(GL10.GL_GREATER, 0.5f)ならアルファ値が0.5より大きいピクセルを描画する。