Introducción a OpenGL: Conceptos Básicos y Técnicas de Programación

Enviado por Programa Chuletas y clasificado en Plástica y Educación Artística

Escrito el en español con un tamaño de 7,07 KB

¿Qué es OpenGL?

OpenGL es una librería gráfica escrita originalmente en C que permite la manipulación de gráficos 3D a todos los niveles.

Librerías Auxiliares de OpenGL

GLU

Contiene funciones gráficas de más alto nivel, que permiten realizar operaciones más complejas.

GLUT

Es un paquete auxiliar para construir aplicaciones de ventanas, además de incluir algunas primitivas geométricas auxiliares.

GLUI

GLUI es una librería que proporciona una interfaz de usuario sencilla para aplicaciones OpenGL. (Descripción adicional para mejorar la información)

Tipos de Primitivas de OpenGL y sus Variantes

  • GL_POINTS: Dibuja puntos.
  • GL_LINES: Dibuja líneas no conectadas.
  • GL_LINE_STRIP: Dibuja una serie de líneas interconectadas.
  • GL_LINE_LOOP: Igual que el anterior pero el primer y último están interconectados.
  • GL_POLYGON: Dibuja un polígono de n vértices donde n es como mínimo 3.
  • GL_TRIANGLES: Dibuja una serie de triángulos.
  • GL_TRIANGLE_STRIP: Dibuja triángulos pegados unos con otros (uno frente a otro).
  • GL_TRIANGLE_FAN: Dibuja triángulos pegados unos con otros en forma de abanico.
  • GL_QUADS: Dibuja una serie de cuadriláteros.
  • GL_QUAD_STRIP: Dibuja cuadriláteros pegados unos con otros.

Manipulación de la Cámara

Sintaxis de la función

glulookAt(eyeX,eyeY,eyeZ,atX,atY,atZ,upX,upY,upZ);

Parámetros

  • eye: Posición de la cámara.
  • at: Punto al que la cámara está mirando.
  • up: Vector que define la orientación de la cámara.

Tipos de Proyecciones en OpenGL

Proyección Paralela

Los rayos proyectores son paralelos.

Proyección Perspectiva

Los rayos parten de un punto de vista.

Utilización de Luces en OpenGL

Las luces cuentan con nombre propio del estilo GL_LIGHT0, GL_LIGHT1, GL_LIGHT2 y así sucesivamente. Para activar o desactivar cada una de ellas también usamos glEnable() y glDisable() pasando como parámetro el nombre de la luz que deseamos afectar. También podemos activar y desactivar todo el cálculo de iluminación pasando como parámetro GL_LIGHTING a estos procedimientos.

Concepto de Proyección

La proyección es la representación de objetos tridimensionales en un plano. Es la conversión de 3 puntos a 2 puntos, es decir, de 3D a 2D.

Tipos de Luz en OpenGL

glShadeModel(); Usamos GL_FLAT como parámetro para definir una iluminación plana, y GL_SMOOTH para una iluminación suave. También existen otros modos de definir el tipo de iluminación cuando trabajamos con objetos de la librería GLU.

Texturas en OpenGL

¿Qué es una Textura?

Una textura es una imagen del tipo BitMap utilizada para cubrir la superficie de un objeto virtual para proveerle detalles de color.

¿Cómo se Agrega una Textura a una Figura Geométrica?

OpenGL soporta dos técnicas de texturizado: Por Manipulación del Color de la Superficie y por Mapeado del Ambiente. La primera de estas se refiere a manipular directamente los colores de las superficies de las caras a afectar, sin tomar en cuenta nada más que el color de la textura a aplicar. Y la segunda consiste en involucrar los colores de los materiales de los objetos a texturizar, así como las luces y las normales obteniendo una textura combinada con el ambiente.

Funciones del GLU para Crear Figuras Geométricas Básicas

  • gluCylinder
  • gluSphere
  • gluQuadricObj

Límites de un Plano de Proyección por Defecto

Por default, si no se específica el volumen de visualización, se construye un rectángulo de 2x2, donde las coordenadas de este rectángulo quedan como:

((-1.0,-1.0),(-1.0,1.0),(1.0,-1.0),(1.0,1.0)).

Definición de Figuras en OpenGL

La definición de figuras en OpenGL se hace con las instrucciones glBegin() y glEnd().

Función para la Disposición de la Cámara

glulookAt(eyeX,eyeY,eyeZ,atX,atY,atZ,upX,upY,upZ);

  • eye: Donde está la cámara.
  • at: A dónde está mirando la cámara.
  • up: Vector con el cual se regula la orientación de la cámara.

Transformaciones Geométricas en 3D

Rotaciones

Las rotaciones se definen con glRotate…(a, x, y, z); La cual recibe 4 parámetros, el primero es el número de grados que nos interesa rotar el cuerpo o la escena, y los otros 3 determinan el nivel en que se verá afectada la operación respecto a cada uno de los 3 ejes X, Y y Z.

Traslaciones

La operación de Traslación se define con glTranslate...(x, y, z); esta recibe 3 parámetros, que son el número de unidades que deseamos trasladar la figura en cada uno de los 3 ejes.

Escalamiento

El escalamiento se define con: glScale...(x, y, z); este también recibe 3 parámetros que definen el grado de escalamiento que deseamos aplicar a cada uno de los 3 ejes.

Proyecciones Paralelas

Ortogonal

Consiste en trazar líneas perpendiculares al plano de proyección que resultan ser paralelas entre sí.

Oblicuas

Se obtiene una proyección oblicua al proyectar puntos a lo largo de líneas paralelas que no son perpendiculares al plano de proyección.

Color en Figuras Geométricas

Con la función glColor3f(rojo, verde, azul);

Adición de Vértices en OpenGL

Con la función glVertex3…(x, y, z);

Transformaciones Diferenciadas en OpenGL

Los métodos glPushMatrix y glPopMatrix permiten realizar transformaciones específicas para cada objeto.

Habilitar una Luz en OpenGL

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

Splines en Graficación

Una curva compuesta de secciones polinomiales satisfaciendo ciertas condiciones de continuidad entre ellas.

Animaciones con OpenGL

Una forma de crear animaciones con objetos de OpenGL es aplicándoles transformaciones tales como escalación, rotación o traslación y moviendo la cámara en el ambiente en 3D.

Transformaciones Gráficas Compuestas

Aplicando las transformaciones en forma de multiplicación de matrices.

Código para Habilitar una Luz (Ejemplo)

glEnable(GL_LIGHTING);

glLightfv(GL_LIGHT0, GL_POSITION, @light0_position);

glLightfv(GL_LIGHT0, GL_DIFFUSE, @diffuse);

glLightfv(GL_LIGHT0, GL_SPECULAR, @specular);

glEnable(GL_LIGHT0);

glEnable(GL_COLOR_MATERIAL);

Entradas relacionadas: