では、細かい説明は Webに譲るとして、簡単に。
1 グローバル変数に
GLuint gTexture; を追加します。
2 初期化の関数の最後の方にでも
[color=#d0d0ff" face="monospace]
{
int x, y;
unsigned char *p;
GLubyte data[64][64][3];
glGenTextures(1, &gTexture);
glBindTexture(GL_TEXTURE_2D, gTexture);
p = (unsigned char *)data;
for(y = 0; y < 64; y++)
{
int r = (y * 0xff) / 64;
for (x = 0; x < 64; x++)
{
*p++ = x%2? 255: (unsigned char)r;
*p++ = (unsigned char)(x%2? 255-(y * 0xff / 64): (x * 0xff / 64));
*p++ = (unsigned char)(y%2? r: (0xff-r));
}
}
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D , 0 , 3 , 64 , 64 ,
0 , GL_RGB , GL_UNSIGNED_BYTE , data);
}[/color]
を追加します。
3 既存のコードに以下の関数を追加し、描画のどこかでコールして下さい。
[color=#d0d0ff" face="monospace]
void display2()
{
glBindTexture(GL_TEXTURE_2D, gTexture);
glEnable(GL_TEXTURE_2D);
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0, 0);
glVertex3f(5, 0, 5);
glTexCoord2f(1, 0);
glVertex3f(-5, 0, 5);
glTexCoord2f(0, 1);
glVertex3f(5, 0, -5);
glTexCoord2f(1, 1);
glVertex3f(-5, 0, -5);
glEnd();
glDisable(GL_TEXTURE_2D);
}[/color]
4 終了時(main関数を抜けるところ)で
glDeleteTextures(1, &gTexture);を
コールして下さい。
これで、座標[0, 0, 0]あたりに四角のポリゴンがグリッドっぽい変なテクスチャが
張られた状態で表示されます。