// DIBUJO DE VARIOS CUADROS #include <GL/glut.h> void DibujaCuadro(float); void display(void) { glClearColor (0.0, 0.0, 0.0, 0.0); // selecciona el color de borrado -negro- /* borra la pantalla */ glClear (GL_COLOR_BUFFER_BIT); // borra la pantalla glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0); glMatrixMode(GL_MODELVIEW); glColor4f(1,0,0,1); DibujaCuadro(1); glPushMatrix(); glTranslatef(0,2,0); // arriba DibujaCuadro(.5); glPopMatrix(); glPushMatrix(); glTranslatef(0,-2,0); // abajo DibujaCuadro(.5); glPopMatrix(); glPushMatrix(); glTranslatef(-2,0,0); // izquierda DibujaCuadro(.5); glPopMatrix(); glPushMatrix(); glTranslatef(2,0,0); // derecha DibujaCuadro(.5); glPopMatrix(); glFlush (); // Vacia el buffer de dibujo sleep(3); exit(0); } void DibujaCuadro(float tam) { glBegin(GL_QUADS); glVertex3f(-tam/2, tam/2, 0); glVertex3f(-tam/2, -tam/2, 0); glVertex3f(tam/2, -tam/2, 0); glVertex3f(tam/2, tam/2, 0); glEnd(); } void inicializa (void) { /* inicializa los valores de la vista */ glLoadIdentity(); } int main(int argc, char** argv) { glutInit(&argc, argv); // Inicializa la libreria auxiliar GLUT glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // Inicializa el modo de visualizacion glutInitWindowSize (500, 500); // Indica el tamano de la ventana (ancho,alto) glutInitWindowPosition (20, 20); // Indica la posiciOn inicial (xmin,ymin) glutCreateWindow ("Triangulo"); // Abre la ventana con el tItulo indicado //inicializa (); // Inicializar valores glutDisplayFunc(display); // Indica cual es la funciOn de dibujo glutMainLoop(); // Comienza el bucle de dibujo y proceso de eventos. return 0; }