// 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;
}