最終更新: mikk_ni3_92 2008年09月17日(水) 13:48:25履歴
現在地 >> メニュー >> 基本編11 >> フォグ(霧の表現) >> fog::まとめコード
#include <GL/glut.h> //------------ プロトタイプ宣言 ---------------// void SetUpFog(); void display(); void reshape(int w, int h); void DRAW_XYZ(); //--------------OpenGLの初期設定-------------------// void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH); //ダブルバッファ、Zバッファ glutInitWindowSize(300,300); glutCreateWindow("window name"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); glutReshapeFunc(reshape); } void MY_INIT() { glClearColor(1.0, 1.0, 1.0, 1.0); } //------------ フォグの設定 ----------------// void SetUpFog() { float fogColor[4]= {0.2, 0.2, 1, 1.0}; //フォグの色 glFogi(GL_FOG_MODE, GL_LINEAR); //種類 glFogfv(GL_FOG_COLOR, fogColor); //色 glFogf(GL_FOG_DENSITY, 0.35); //密度 glHint(GL_FOG_HINT, GL_DONT_CARE); //ヒント glFogf(GL_FOG_START, 2.0); //開始位置 glFogf(GL_FOG_END, 5.0); //終了位置 glEnable(GL_FOG); //有効化 } //------------- メイン関数 -----------------// int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); MY_INIT(); SetUpFog(); //フォグの設定 glutMainLoop(); return 0; } //-------------- ここからコールバック -----------------// void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); //Zバッファ有効化 DRAW_XYZ(); //XYZ軸の描画 glPushMatrix(); glRotatef(90,1,0,0); glColor3f(0.6,0.6,0.6); glRectf(-2,2,2,-2); glPopMatrix(); glColor3d(1,1,1); //色のリセット glutSwapBuffers(); } void reshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); //行列モード切替 glLoadIdentity(); //行列初期化 gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); //行列モード切替 glLoadIdentity(); gluLookAt(1.0, 0.5, 3.0, 0.0, 0.5, 0.0, 0.0, 1.0, 0.0); } //---------------- ここから各種関数 -------------------------// void DRAW_XYZ() { glBegin(GL_LINES); glColor3d(0,1,0);//x glVertex2d(-100,0); glVertex2d(100, 0); glColor3d(1,0,0);//y glVertex2d(0,0); glVertex2d(0,100); glColor3d(0,0,1);//z glVertex3d(0,0,-100); glVertex3d(0,0, 100); glEnd(); }