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);