프로그래밍/OpenGL with C
[OpenGL]2개 물체중 하나만 돌리기 .
Yi Junho
2010. 8. 31. 17:55
반응형
#include#include static GLfloat spin = 0.0; void display(void) { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(spin, 0.0, 0.0, 0.1); glColor3f(1.0, 1.0, 1.0); glColor3f(1.0, 1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (11.25, 11.25, 0.0); glVertex3f (93.75, 11.25, 0.0); glVertex3f (93.75, 11.75, 0.0); glVertex3f (11.25, 11.75, 0.0); glEnd(); glPopMatrix(); glColor3f(1.0, 1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (9.25, 0.25, 0.0); glVertex3f (93.75, 0.25, 0.0); glVertex3f (93.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glutSwapBuffers(); } void spinDisplay(void) { spin = spin + 2.0; if (spin > 360.0) spin = spin - 360.0; glutPostRedisplay(); } void spinDisplay2(void) { spin = spin + 5.0; if (spin > 360.0) spin = spin - 360.0; glutPostRedisplay(); } void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } void reshape(int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void mouse(int button, int state, int x, int y) { switch (button) { case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) glutIdleFunc(spinDisplay); break; case GLUT_MIDDLE_BUTTON: glutIdleFunc(spinDisplay2); break; case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN) glutIdleFunc(NULL); break; default: break; } } /* * Request double buffer display mode. * Register mouse input callback functions */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (250, 250); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMouseFunc(mouse); glutMainLoop(); return 0; }
반응형