OpenGLプログラミング(テクスチャマッピング)
テクスチャのロードはどうしようかなぁ、GDI+使っちゃうとWindows専用になっちゃうし…ってことで、PNGをlibpng使ってロードするように。きちんとロードできているか試しにglDrawPixels()で描いてみたところ、画像が崩れるのでおかしいなぁと調べてると、どうやらこの関数はwidthが4の倍数じゃないときちんと描いてくれないな。
とかやっていたら、glpngという便利なモノを発見。本家サイトがなくなってるので、ここのやつを使った。
pngInfo pnginfo; GLuint texture = pngBind( "d:\\miku\\miku_bonus_files\\miku_sd.png", PNG_NOMIPMAP, PNG_ALPHA, &pnginfo, GL_CLAMP, GL_LINEAR, GL_LINEAR );
ってやるだけでOpenGLテクスチャを作ってくれるすぐれもの。
あとは、
glBindTexture( GL_TEXTURE_2D, texture ); glBegin( GL_TRIANGLES ); glTexCoord2f( 0, 0 ); glVertex3f( -1.0, 1.0, 0); glTexCoord2f( 0, 1 ); glVertex3f( -1.0, -1.0, 0); glTexCoord2f( 1, 0 ); glVertex3f( 1.0, 1.0, 0); glTexCoord2f( 1, 0 ); glVertex3f( 1.0, 1.0, 0); glTexCoord2f( 0, 1 ); glVertex3f( -1.0, -1.0, 0); glTexCoord2f( 1, 1 ); glVertex3f( 1.0, -1.0, 0); glEnd();
と書くと、三角形x2を使った四角形にロードしたPNGが貼り付けられて表示される。