‘OpenGL’ カテゴリーのアーカイブ

OpenGLプログラミング(カメラ移動)

2009 年 9 月 6 日 日曜日 by amano

最初はOpenGLにも(ゲーム機みたいに)カメラ用の関数あるんだろう程度にしか思っていなかったのだけど、全然見つからないのでなんだろう…と各地のサイトをうろついてると、「あー、行列の設定でやるってことね」と把握。で、手軽に視点、参照点を使えるようにgluLookAt()があると。

if( g_input->isButtonPressed( 0, XINPUT_GAMEPAD_DPAD_LEFT ) )	g_camera_x -= 0.1;
if( g_input->isButtonPressed( 0, XINPUT_GAMEPAD_DPAD_RIGHT ) )	g_camera_x += 0.1;
if( g_input->isButtonPressed( 0, XINPUT_GAMEPAD_DPAD_UP ) )	g_camera_z -= 0.1;
if( g_input->isButtonPressed( 0, XINPUT_GAMEPAD_DPAD_DOWN ) )	g_camera_z += 0.1;

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
LookAtGL( g_camera_x, g_camera_y, g_camera_z, 0, 0, 0, 0, 1, 0 );
※↑gluを使わずに視点、参照点から行列を設定する関数

おー、カメラが動くようになったどー。

OpenGLプログラミング(テクスチャマッピング)

2009 年 9 月 6 日 日曜日 by amano

テクスチャのロードはどうしようかなぁ、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が貼り付けられて表示される。

OpenGLプログラミング(準備)

2009 年 9 月 3 日 木曜日 by amano

Direct3DとOpenGLどっちにしようと迷ったあげくOpenGLで遊ぶことに。なんかの拍子にPS3で3Dやるかもしれないしネ。
OpenGLは昔にちょろっとポリゴン出したくらいの初心者同然なので、OpenGL本家サイトやGoogle頼りに基本から。
(さらに…)