OpenGL テクスチャの貼り方いろいろ
cvLoadImage() などOpenCV関数を利用する方法
http://wiki.livedoor.jp/mikk_ni3_92/d/OpenCV%a4%c7%c6%c9%a4%df%b9%fe%a4%e0
開発環境によるようですが、 glTexImage2D() やgluBuild2DMipMaps() での画像のデータ格納法指定で GL_BGRやGL_BGRAが怒られる場合があります。(visual c++)では確実に怒られます。 その回避方については追加で書きます。
cvLoadImage() を使いかつ、透過を行う場合
画像を見て、透過する箇所のマスクを作成し、IplImageに4チャンネル目を追加する関数を別途用意して、画像を読み込む。
http://wiki.livedoor.jp/mikk_ni3_92/d/%A6%C1%C3%CD%A4%C8%A5%C6%A5%AF%A5%B9%A5%C1%A5%E3%A4%CE%C0%DA%A4%EA%C8%B4%A4%AD
初期化時にアルファの設定
glAlphaFunc(GL_GREATER, 0);
と、実際透過するオブジェクトの描画時、透過終了時に
glEnable(GL_ALPHA_FUNC); glDisable();
を忘れないこと。
yspngのライブラリを使う
http://homepage3.nifty.com/ysflight/pngdecoder/pngdecoderj.html
yspng 自体はpngデコーダなので、やはりOpenCVの場合と同様テクスチャにするにはglTexImage2D()などしてやる必要がある。
glpngのライブラリを使う
http://wiki.livedoor.jp/mikk_ni3_92/d/png%b7%c1%bc%b0%a4%ce%b2%e8%c1%fc
#include <GL/glpng.h> GLuint texture[1]; pngInfo info; texture[0] = pngBind("hoge.png", PNG_BUILDMIPMAPS, PNG_ALPHA, &info, GL_REPEAT, GL_LINEAR, GL_LINEAR);
これだけでテクスチャ登録完了。pngBind() の引数で透過や塗り方、拡大縮小法等の設定も簡単に。すばらしい。
引数の設定などはオフィシャルサイト参照
http://www.fifi.org/doc/libglpng-dev/glpng.html