#include #define WINDOW_WIDTH 640 #define WINDOW_HEIGHT 480 GLfloat angle_tri, angle_quad; void gl_init(void) { glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); angle_tri =0; angle_quad = 0; } void gl_scene_draw(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5f, 0.0f, -6.0f); glRotatef(angle_tri, 0.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f( 0.0f, 1.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 0.0f); glEnd(); glLoadIdentity(); glTranslatef(1.5f, 0.0f, -6.0f); glRotatef(angle_quad, 1.0f, 0.0f, 0.0f); glColor3f(0.5f, 0.5f, 1.0f); glBegin(GL_QUADS); glVertex3f(-1.0f, 1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); glEnd(); glutSwapBuffers(); angle_tri += 0.2f; angle_quad -= 0.15f; } void gl_scene_scale(int width, int height) { if(height == 0) height = 1; glViewport(0, 0, (GLsizei)width, (GLsizei)height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int main(int argc, char** argv) { glutInit(&argc, (char **)argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowPosition(100, 100); glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT); glutCreateWindow(argv[0]); gl_init(); glutReshapeFunc(gl_scene_scale); glutDisplayFunc(gl_scene_draw); glutMainLoop(); return 0; }