#include void idle(void) { glutPostRedisplay(); } void display(void) { int i; static int r = 0; /* 立方体の回転角 */ GLdouble vertex[8][3] = { { 0.0, 0.0, 0.0 }, { 1.0, 0.0, 0.0 }, { 1.0, 1.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, { 1.0, 0.0, 1.0 }, { 1.0, 1.0, 1.0 }, { 0.0, 1.0, 1.0 } }; int edge[12][2] = { { 0, 1 }, { 1, 2 }, { 2, 3 }, { 3, 0 }, { 4, 5 }, { 5, 6 }, { 6, 7 }, { 7, 4 }, { 0, 4 }, { 1, 5 }, { 2, 6 }, { 3, 7 } }; glClear(GL_COLOR_BUFFER_BIT); /* モデルビュー変換行列の初期化、設定 */ glLoadIdentity(); gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glRotated((GLdouble) r, 0.0, 1.0, 0.0); glColor3d(0.0, 0.0, 0.0); glBegin(GL_LINES); for (i = 0; i < 12; i++) { glVertex3dv(vertex[edge[i][0]]); glVertex3dv(vertex[edge[i][1]]); } glEnd(); /* glutSwapBuffers(); *//* 追加 */ if (++r >= 360) r = 0; } void resize(int w, int h) { glViewport(0, 0, w, h); /* 投影変換行列の初期化、設定 */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, 1.0, 1.0, 10.0); /* モデルビュー変換行列に変更 */ glMatrixMode(GL_MODELVIEW); } void keyboard(unsigned char key, int x, int y) { if (key == '\033') exit(0); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA /* | GLUT_DOUBLE *//* 追加 */); glutCreateWindow(argv[0]); glClearColor(1.0, 1.0, 1.0, 0.0); glutDisplayFunc(display); glutKeyboardFunc(keyboard); glutIdleFunc(idle); glutReshapeFunc(resize); glutMainLoop(); }