/* * File: main.c * Author: luzem * * Created on 17 de marzo de 2010, 1:08 */ #include <stdio.h> #include <stdlib.h> #include "GL/freeglut.h" //Alternativa a Glut.h /******************************************************************/ /* Funcion de dibujado */ /* Parametros: Ninguno */ /* Salida: Ninguna */ /******************************************************************/ void Dibuja(void) { float altura = 1; float base = -0.5f; /* Establece el color de borrado */ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); /* Borra el buffer de color */ glClear(GL_COLOR_BUFFER_BIT); /* Establece el color de dibujo */ glColor3f(1.0f, 1.0f, 1.0f); /* Crea un poligono 2D (cuadrado) */ glBegin(GL_POLYGON); glVertex2f(-0.5f, -0.5f); glVertex2f(-0.5f, 0.5f); glVertex2f(0.5f, 0.5f); glVertex2f(0.5f, -0.5f); glEnd(); int x; for (x = 0; x < 5; x++) { if (x % 2 == 0) { //cuadrado par pintamos de negro glColor3f(0, 0, 1); } else { //cuadrado impar pintamos de verde glColor3f(0, 1, 0); } glBegin(GL_POLYGON); glVertex2f(base, base); glVertex2f(base, base + altura); glVertex2f(base + altura, base + altura); glVertex2f(base + altura, base); glEnd(); altura = altura - 0.2; base = base - 0.02; } /* Se asegura de que se ejecutan todas las ordenes */ glFlush(); } /******************************************************************************************/ /* Establece el area visible */ /* Parametros: int ancho --> Ancho del area visible */ /* int alto --> Alto del area visible */ /* Salida: Ninguna */ /******************************************************************************************/ void TamanyoVentana(int ancho, int alto) { glViewport(0, 0, ancho, alto); } /******************************************************************************************/ /* Inicia las propiedades de la vista */ /* Parametros: Ninguno */ /* Salida: Ninguna */ /******************************************************************************************/ void IniciaVista(void) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); } /******************************************************************************************/ /* Abre una ventana OpenGL */ /* Parametros: int numeroArgumentos --> El numero de argumentos en la llamada al programa */ /* char ** listaArgumentos --> Vector de cadenas con cada argumento */ /* Salida: Ninguna */ /******************************************************************************************/ void AbreVentana(int numeroArgumentos, char ** listaArgumentos) { glutInit(&numeroArgumentos, listaArgumentos); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutInitWindowPosition(100, 100); glutCreateWindow(listaArgumentos[0]); glutDisplayFunc(Dibuja); glutReshapeFunc(TamanyoVentana); IniciaVista(); } /******************************************************************************************/ /* Funcion principal */ /* Parametros: int numeroArgumentos --> El numero de argumentos en la llamada al programa */ /* char ** listaArgumentos --> Vector de cadenas con cada argumento */ /* Salida: Un entero que se devuelve al sistema al acabar la ejecucion del programa */ /******************************************************************************************/ int main(int numArgumentos, char ** listaArgumentos) { /* Crea la ventana de la aplicaci¢n */ AbreVentana(numArgumentos, listaArgumentos); /* Establece el bucle principal de control de OpenGL */ glutMainLoop(); return (0); }
El resto de la película en libreta de notas enjoy.