最終更新: mikk_ni3_92 2008年12月26日(金) 16:12:20履歴
現在地 >> メニュー >> 基本編08 >> GLUによる立体表示 >> 基本編08::まとめコード2
#include <GL/glut.h> //--------- プロトタイプ宣言 ----------// void display(); void reshape(int w, int h); void timer(int value); //---------OpenGLの初期設定------------// void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(640,480); glutCreateWindow("GLU Primitive"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); glutReshapeFunc(reshape); glutTimerFunc(0,timer,17); } void MY_INIT() { glClearColor(1.0, 1.0, 1.0, 1.0); //光源の設定(のこりはデフォルト) float light_pos[] = { 2.0, 3.0,1.0, 1.0 }; float red[] = { 0.8, 0.2, 0.2, 1.0 }; glLightfv(GL_LIGHT0, GL_POSITION, light_pos); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, red); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_DEPTH_TEST); //ZバッファON } //------- gluオブジェクトの設定----------// GLUquadricObj *cone; //gluオブジェクト void GLU_OBJ_INIT() { cone = gluNewQuadric(); gluQuadricDrawStyle(cone, GLU_FILL); //描画スタイル } //-------- ここからメイン関数 ------------// int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); MY_INIT(); GLU_OBJ_INIT(); //gluオブジェクトの初期設定 glutMainLoop(); return 0; } //--------- ここから各種コールバック ------------// void display() { static int r = 0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(static_cast<float>(r), 0.0, 1.0, 0.0); gluCylinder(cone, 0.5, 0.0, 1, 10, 10); //円柱描画 glPopMatrix(); glutSwapBuffers(); if(++r > 360){r= 0;} } 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(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); } void timer(int value) { glutPostRedisplay(); glutTimerFunc(value,timer,17); }