テクスチャの作成&描画方法

まずテクスチャを作成する前にglEnable(GL_TEXTURE_2D)を呼び出して2Dテクスチャを有効にする必要がある。

glGenTextures()関数を使ってテクスチャ名を作成する。DirectXをやっていたからテクスチャ名を作成するっていうのは何かしっくりこないがそういうものらしい。

次にglBindTexture()関数を呼び出してテクスチャターゲットとテクスチャ名をバインドする。これでこのテクスチャ名の次元を設定できる。

次に下記の関数を呼び出してフィルタの設定を行う。この設定を行ってないとテクスチャが表示されなかった。これを呼び出してないサンプルプログラムも存在するので環境によって違うのかもしれない。

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);		

そしてglTexImage2D()関数でテクスチャに画像を設定する。

ここまでのテクスチャ作成のサンプルを下記に記録しておく。

glEnable(GL_TEXTURE_2D);
	
glGenTextures(1, &texture1);
glBindTexture(GL_TEXTURE_2D, texture1);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);		

GLubyte bits[64][64][3];
for(int i = 0; i < 64; i++) {
 int r = (i * 0xFF)/64;
 for(int j = 0; j < 64; j++) {
  bits[i][j][0] = (GLubyte)r;
  bits[i][j][1] = (GLubyte)((j * 0xFF)/64);
  bits[i][j][2] = (GLubyte)~r;
  }
}
glTexImage2D(GL_TEXTURE_2D, 0, 3, 64, 64, 
             0, GL_RGB, GL_UNSIGNED_BYTE, bits);

テクスチャを使った描画で気をつける点は描画する前にglBindTexture()関数を呼び出して使用するテクスチャを設定することぐらいだろう。あとは下記のように記述すればテクスチャを貼ったポリゴンが描画される(はず)。

glBegin(GL_POLYGON);

glBindTexture(GL_TEXTURE_2D, texture1);		

glTexCoord2f(0, 0); glVertex2d(0.1, 0.1);
glTexCoord2f(0, 1); glVertex2d(0.1, 0.9);
glTexCoord2f(1, 1); glVertex2d(0.9, 0.9);
glTexCoord2f(1, 0); glVertex2d(0.9, 0.1);
	
glEnd();