#include <GL/glut.h>
#define ANCHO 400 #define ALTO 400
/* Coordenada X del origen de la ventana, esquina superior izquierda */ #define ORIGENX 100 /* Coordenada Y del origen de la ventana, esquina superior izquierda */ #define ORIGENY 100
/* Parámetros iniciales del programa. */ void inicio(void) { /* Activamos la matriz de proyección. */ glMatrixMode(GL_PROJECTION); /* "Reseteamos" esta con la matriz identidad. */ glLoadIdentity(); /* Plano de proyección igual a la ventana de visualización. *Volumen de visualización desde z=-10 hasta z=10. */ glOrtho(0, ANCHO, 0, ALTO, -10, 10); /* Activamos la matriz de modelado/visionado. */ glMatrixMode(GL_MODELVIEW); /* La "reseteamos". */ glLoadIdentity(); /* Nos trasladamos al centro de nuestra ventana donde siempre * dibujaremos el polígono. Nos mantenemos en el plano z=5 que * se encuentra dentro del volumen de visualización. */ glTranslatef( ANCHO/2.0, ALTO/2.0, 5.0); /* Color de fondo para la ventana de visualización, negro. */ glClearColor( 0.0, 0.0, 0.0, 0.0);
}
/* OpenGL llamara a esta rutina cada vez que tenga que dibujar de * nuevo. Dado que rellenara el polígono de color y cada vértice * es de un color diferente, OpenGL rellenara el interior con una * interpolación de los colores de los 4 vértices. Lo hace automá- * ticamente. */ void dibujar(void) { /* "Limpiamos" el frame buffer con el color de "Clear" en este * caso negro */ glClear(GL_COLOR_BUFFER_BIT); /* Queremos que se dibujen las caras frontales de los polígonos y * con relleno de color. */ glPolygonMode(GL_FRONT, GL_FILL); glBegin(GL_POLYGON); /* Color azul para el primer vértice */ glColor3f(0.0, 0.0, 1.0); glVertex3i(-100, -100, 5); /* Color verde para el segundo vértice */ glColor3f(0.0, 1.0, 0.0); glVertex3i(-100, 100, 5); /* Color rojo para el tercer vértice */ glColor3f(1.0, 0.0, 0.0); glVertex3i(100, 100, 5); /* Color amarillo para el cuarto vértice */ glColor3f(1.0, 1.0, 0.0); glVertex3i(100, -100, 5); glEnd(); }
int main(int argc, char **argv) { /* Primera llamada siempre en OpenGL, por si usáramos la línea * de comandos */ glutInit( &argc, argv); //glutInit(&argc, argv); /* Activamos buffer simple y colores del tipo RGB */ glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB); /* Definimos una ventana de medidas ANCHO x ALTO como ventana * de visualización */ glutInitWindowSize( ANCHO, ALTO); /* Posicionamos la esquina superior izquierda de la ventana * en el punto definido */ glutInitWindowPosition( ORIGENX, ORIGENY ); /* Creamos literalmente la ventana y le adjudicamos el nombre * que se observara en su barra de titulo */ glutCreateWindow("Cuadrado Multicolor");
/* Inicializamos el sistema */ inicio();
/* Hacemos saber a OpenGL que cada vez que sea necesario dibujar * de nuevo, por ejemplo la primera vez, o al redimensionar la * ventana con el ratón o en caso de provocar un "redibujado" por * programa, debe llamar a la función "dibujar". */ glutDisplayFunc(dibujar);
/* Aquí espera el programa mientras nada ocurra, es un Loop * infinito que se vera turbado por las sucesivas veces que * sea necesario redibujar. */ glutMainLoop();
return 0; }
|