でごいちです。添付ファイルのCGを実装するプログラムですが、残りの希望としてはテクスチャマッピングの機能を追加したいと思ってます。少々急いでおりますので、早めの内にご指導宜しくお願いします。
指導例:
この関数とこの関数の間に~というプログラムを追加すると良い・・・・など。
急ぎです。テクスチャマッピングの機能追加を希望します
Re:急ぎです。テクスチャマッピングの機能追加を希望します
いいえ、そのつもりはありませんが・・・・誤解を招く表現であったとすれば申し訳ありません。早急に解決方法のアドバイスを頂き(勿論自分でもいくらかの案を練るようにはしてますが)、作業のペースを上げたいと思っています。
Re:急ぎです。テクスチャマッピングの機能追加を希望します
検索はしてみましたか?
テクスチャ
ttp://wisdom.sakura.ne.jp/system/opengl/gl23.html
OpenGL勉強会用 資料のページ
ttp://www.is.oit.ac.jp/~whashimo/server/~whashimo/Article/OpenGL/Chapter7/index.html
OpenGL::テクスチャのはりかた - OpenGL de プログラミング - livedoor Wiki(ウィキ)
ttp://wiki.livedoor.jp/mikk_ni3_92/d/OpenGL::%A5%C6%A5%AF%A5%B9%A5%C1%A5%E3%A4%CE%A4%CF%A4%EA%A4%AB%A4%BF
OpenGL FAQ 21. テクスチャ・マッピング
ttp://opengl.jp/oglfaq/texture.htm
OpenGLでテクスチャーの扱い方 - a geek
ttp://d.hatena.ne.jp/hiratara/20080810/1218379797
これらを読めば直ぐに使い方はわかると思います。
テクスチャ
ttp://wisdom.sakura.ne.jp/system/opengl/gl23.html
OpenGL勉強会用 資料のページ
ttp://www.is.oit.ac.jp/~whashimo/server/~whashimo/Article/OpenGL/Chapter7/index.html
OpenGL::テクスチャのはりかた - OpenGL de プログラミング - livedoor Wiki(ウィキ)
ttp://wiki.livedoor.jp/mikk_ni3_92/d/OpenGL::%A5%C6%A5%AF%A5%B9%A5%C1%A5%E3%A4%CE%A4%CF%A4%EA%A4%AB%A4%BF
OpenGL FAQ 21. テクスチャ・マッピング
ttp://opengl.jp/oglfaq/texture.htm
OpenGLでテクスチャーの扱い方 - a geek
ttp://d.hatena.ne.jp/hiratara/20080810/1218379797
これらを読めば直ぐに使い方はわかると思います。
Re:急ぎです。テクスチャマッピングの機能追加を希望します
Justyさんありがとうございます。添付のリンクは、分かる範囲で参考にさせて頂きます。
決して答を教えろとかいう類のつもりでは全くないですが(誤解を招くことがあれば申し訳ありません)出来れば、私のプログラムに何とかという関数を追加するとこのような動作を行う、という具体例を示していただけるとリンクの内容理解を深める上でありがたいので、他の閲覧者の方もどうか宜しくお願い致します。
決して答を教えろとかいう類のつもりでは全くないですが(誤解を招くことがあれば申し訳ありません)出来れば、私のプログラムに何とかという関数を追加するとこのような動作を行う、という具体例を示していただけるとリンクの内容理解を深める上でありがたいので、他の閲覧者の方もどうか宜しくお願い致します。
Re:急ぎです。テクスチャマッピングの機能追加を希望します
では、細かい説明は Webに譲るとして、簡単に。
1 グローバル変数に GLuint gTexture; を追加します。
2 初期化の関数の最後の方にでも
3 既存のコードに以下の関数を追加し、描画のどこかでコールして下さい。
コールして下さい。
これで、座標[0, 0, 0]あたりに四角のポリゴンがグリッドっぽい変なテクスチャが
張られた状態で表示されます。
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]あたりに四角のポリゴンがグリッドっぽい変なテクスチャが
張られた状態で表示されます。