// cc -Wall triangle.c -o tiangle -lGL -lGLU -lglut -lm -lX11 -L /usr/X11R6/lib; ./triangle #include #include #include GLfloat t_angle; void display( ); void display(void) { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity( ); glRotatef(t_angle, 1.0f, 1.0f, 1.0f); glBegin(GL_TRIANGLES); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(0.0f, 0.0f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(1.0f, 1.0f, 0.0f); glEnd( ); glPushMatrix( ); glTranslatef(-0.5f, 0.0f, -0.5f); glRotatef(t_angle, 1.0f, 0.0f, 0.0f); glBegin(GL_POLYGON); glColor3f(1.0f, 0.0f, 1.0f); glVertex3f(0.0f, 0.0f, 0.0f); glColor3f(0.0f, 1.0f, 1.0f); glVertex3f(1.0f, 0.0f, 0.0f); glColor3f(1.0f, 1.0f, 0.0f); glVertex3f(1.0f, 1.0f, 0.0f); glColor3f(0.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f, 0.0f); glEnd( ); glPopMatrix( ); glutSwapBuffers( ); glutPostRedisplay( ); /* t_angle += 0.02;*/ } void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_FLAT); glLoadIdentity( ); glTranslatef(0.0f, 0.0f, 0.0f); glOrtho(-2.0, 2.0, -2.0, 2.0, -2.0, 2.0); t_angle = 0.1; } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(250,250); glutInitWindowPosition(100, 100); glutCreateWindow("Hello"); init( ); glutDisplayFunc(display); /* glutIdleFunc(display);*/ glutMainLoop( ); return 0; }