AndroidでOpenGLのテクスチャ

テクスチャの生成から描画までの流れは以下の通り。


1.GL10.glGenTexturesメソッド

一意の名前(番号)を生成する。

名前はint配列で取得できるので、使うテクスチャの数が予め分かっているなら1度に生成出来る。

glGenTexturesを複数回呼び出しても構わない。

(一意の名前が作られるだけで、テクスチャオブジェクトはここではまだ作られないらしい)


2.GL10.glActiveTextureメソッド

テクスチャユニットを選択する。

テクスチャユニットを複数使う事で、1つのオブジェクトに複数のテクスチャを重ね合わせる事が出来るようになる。

以降で使う、glBindTextureやglEnable(GL10.GL_TEXTURE_2D)は、ここで選択されたテクスチャユニットに対して適用される。


3.GL10.glBindTextureメソッド

glGenTexturesで生成した名前を、glActiveTextureで選択されたテクスチャユニットに結びつける。

(初めて使われる名前の場合、ここでテクスチャオブジェクトが作られるらしい

以降で行うテクスチャに関する操作は、ここで結びつけられたテクスチャに対して適用される。


4.GLUtils.texImage2Dメソッド

画像データをテクスチャにセットする。

バインドされたテクスチャにセットされる。


5.GL10.glTexParameterfメソッドなど

テクスチャのパラメータをセットする。

バインドされたテクスチャにセットされる。


6.GL10.glEnable(GL10.GL_TEXTURE_2D)

テクスチャの利用を有効にする。

選択されているテクスチャユニットに対して適用される。


7.テクスチャを使わなくなったらGL10.glDeleteTexturesメソッド

glGenTexturesの後始末を行う。




テクスチャは初期化時などで予め作成しておくと思うので、glGenTexturesをして、

使うテクスチャの数分glBindTexture、texImage2D、GL10.glTexParameterfを繰り返す。

(準備するだけなのでglActiveTextureはあまり意識しなくてよさそう)



描画時は、glActiveTextureでユニットを選択し、glBindTextureしてglEnableして描画する。

(使わないユニットはglDisableする)