lunes, 17 de febrero de 2014

OpenGL

Práctica con el software Code::Blocks

Practica 1 - Generación de cuadrados con la función GL_QUADS

El siguiente código nos ayudará a desplegar en nuestra pantalla un juego de cuadrados que varían de tonalidad en grises de blanco a negro conforme se acercan al centro, es necesario implementar las librerías necesarias antes de ejecutar el programa:
----------------------------------------------------------------------------------------------------------
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif

#include <stdlib.h>

void display(void){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glClear(GL_COLOR_BUFFER_BIT);
    //glPointSize(2);
    //glLineWidth(2);
    //glColor3f(1.0, 0.0, 0.0);
    double i=0.9;
    float k=1.0;


//Cuadrados
        glBegin(GL_QUADS);
            for(i;i>0.1;i=i-0.1){
                    glColor3f(k,k,k);
                    glVertex2d(i,i);
                    glVertex2d(i*-1,i);
                    glVertex2d(i*-1,i*-1);
                    glVertex2d(i,i*-1);
                    k=k-0.1;
            }
        glEnd();

    glFlush();

}

int main (int argc, char** argv){
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(600, 600);
    glutInitWindowPosition(0, 0);
    glutCreateWindow("Matriz");
    glutDisplayFunc(display);
    glutMainLoop();
}
------------------------------------------------------------------------------------------------------------
Esto producirá una imagen como la siguiente:

Practica 2 - Generación de triángulos con función GL_TRIANGLE

De igual manera, se pueden generar una serie de triángulos con el mismo método utilizado para los cuadrados, a continuación se presenta el siguiente ejemplo:
------------------------------------------------------------------------------------------------------------
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif

#include <stdlib.h>

void display(void){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glClear(GL_COLOR_BUFFER_BIT);
    //glPointSize(2);
    //glLineWidth(2);
    //glColor3f(1.0, 0.0, 0.0);
    double i=0.9;
    float k=1.0;


//Cuadrados
        glBegin(GL_TRIANGLES);
         for(i;i>0.1;i=i-0.1){
                    glColor3f(k,k,k);
                    glVertex2d(0,i);
                    glVertex2d(i,i*-1);
                    glVertex2d(i*-1,i*-1);
                    k=k-0.1;
         }
        glEnd();

    glFlush();

}

int main (int argc, char** argv){
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(600, 600);
    glutInitWindowPosition(0, 0);
    glutCreateWindow("Matriz");
    glutDisplayFunc(display);
    glutMainLoop();
}
----------------------------------------------------------------------------------------------------------
En este caso, obtendremos una imagen como la que a continuación se muestra:

Sáenz Morales Carlos

No hay comentarios.:

Publicar un comentario