El uso de las aplicaciones para dibujar gráficos 3D en tiempo real se ha estandarizado en áreas tan diversas como los juegos interactivos, películas y simulaciones, hasta la visualización de datos para usos científicos, médicos y comerciales. En este sentido, OpenGL constituye una de las interfaces de programación más recomendadas en este campo por su excelente estabilidad y rendimiento. Con esta obra se familiarizará con los elementos básicos de la programación de gráficos 3D con OpenGL, aprendiendo a construir un programa que use OpenGL, establecer el entorno de interpretación 3D y a crear objetos básicos así como a aplicarles luces y sombras y mucho más. El lector encontrará además toda la información específica que necesite dependiendo del sistema operativo con el que trabaje, y a medida que avance en el uso de esta API gráfica irá profundizando en el conocimiento de sus opciones avanzadas y los distintos efectos especiales que permite. Incluye CD-ROM con los ejemplos desarrollados a lo largo del libro así como diversas herramientas de utilidad.Introducción Contenido del libro Parte I. OpenGL clásico Parte II. OpenGL en todas partes Parte III. OpenGL: la próxima generación Parte IV. Apéndice Convenios utilizados en este libro Parte I. OpenGL clásico 1. Introducción a los gráficos 3D y OpenGL ¿De qué trata todo esto? Una breve historia sobre los gráficos por ordenador Introducción del CRT Hacia los gráficos tridimensionales 2D + Perspectiva = 3D Elementos 3D Estudio sobre los efectos 3D Perspectiva Color y sombreado Luces y sombras Trazado de mapa de textura Niebla Fusión y transparencia Suavizado Usos comunes para gráficos de 3D 3D en tiempo real 3D en tiempo no real Principios básicos de programación 3D Modo inmediato y modo retenido (gráficos de escena) Sistemas de coordenadas Coordenadas cartesianas 2D Recorte de coordenadas Puertos de vista: coordenadas de dibujo en coordenadasde ventana El vértice: una posición en el espacio Coordenadas cartesianas 3D Proyecciones: llevar 3D a 2D Proyecciones ortogonales Proyecciones de perspectiva 2. Uso de OpenGL ¿Qué es OpenGL? Evolución de un estándar OpenGL ARB Licencias y conformidad La guerra de las API Introducción de DirectX OpenGL llega a los PC ¿OpenGL para juegos? Ventaja inicial de Direct3D El juego sucio El futuro de OpenGL ¿Cómo funciona OpenGL? Implantaciones genéricas Implantaciones de hardware El canal OpenGL: Una API, no un lenguaje Bibliotecas y encabezados Especificaciones API Tipos de datos Convenios de denominación de funciones Independencia de plataforma Uso de GLUT Configurar el entorno de programación El primer programa El encabezado El cuerpo Modo de presentación: un solo búfer Crear la ventana OpenGL Mostrar la devolución de llamada Establecer el contexto y seguir Llamadas de gráficos OpenGL Borrar el búfer de color Limpiar la cola Dibujar formas con OpenGL Dibujar un rectángulo Escalar la ventana Configurar el puerto de vista y el volumen de recorte Definir el puerto de vista Definir el volumen de visualización recortado Mantener cuadrado un cuadrado Animación con OpenGL y GLUT Doble búfer Máquina de estado de OpenGL Guardar y restablecer estados Errores de OpenGL Errores en un código Identificar la versión Especificar sugerencias con glHint Usar extensiones Comprobar una extensión ¿De quién es esta extensión? OpenGL más allá de 1.1 en Windows Referencia 3. Dibujo espacial: Primitivos geométricos y búferes Dibujar puntos en 3D Configurar un lienzo 3D Un punto 3D: el vértice Dibujar algo Dibujar puntos Nuestro primer ejemplo Establecer el tamaño del punto Dibujar líneas en 3D Bandas y bucles de línea Aproximación de curvas con líneas rectas Establecer el ancho de línea Punteo de líneas Dibujo de triángulos en 3D Triángulos: nuestro primer polígono Giro Bandas de triángulo Abanicos de triángulos Construir objetos sólidos Establecer los colores del polígono Ocultar eliminación de superficies Eliminación selectiva: ocultar superficies para mejorarel rendimiento Modos de polígonos Otros primitivos Polígonos de cuatro lados: cuadriláteros Bandas de cuadriláteros Polígonos generales Rellenar polígonos o volver a puntear Reglas de creación de polígonos Subdivisión y bordes Otros trucos de búfer Usar los destinos de búfer Manipular el búfer de profundidad Rectángulo de recorte Usar el búfer de plantilla Creación del patrón de plantilla Referencia 4. Transformaciones geométricas: el canal ¿Es este el temido capítulo dedicado a las matemáticas? Transformaciones Coordenadas visuales Transformaciones de visualización Transformaciones de modelado Dualidad de la vista de modelo Transformaciones de proyección Transformaciones de puerto de vista Matrices: moneda matemática de los gráficos 3D ¿Qué es una matriz? Canal de transformación Matriz de vista de modelo Traslación Rotación Escalado Matriz de identidad Pila de matrices Un ejemplo nuclear Usar proyecciones Proyecciones ortogonales Proyecciones de perspectiva Un ejemplo asombroso Manipulación avanzada de matrices Cargar una matriz Ejecutar transformaciones propias Unir transformaciones Moverse en OpenGL con cámaras y actores Fotograma de actor Angulos Euler Administración de cámaras Reunir todos los conceptos Referencia 5. Color, materiales e iluminación: elementos básicos ¿Qué es el color? La luz como una onda La luz como una partícula Nuestro detector personal de fotones El ordenador como generador de fotones Hardware de PC de color Modos de presentación de PC Resolución de pantalla Profundidad de color Modo de color de 4 bits Modo de color de 8 bits Modo de color de 24 bits Modos de color de 16 y 32 bits Uso del color en OpenGL El cubo de colores Establecer el color de dibujo Sombreado Establecer el modelo de sombreado El color en el mundo real Luz ambiente Luz difusa Luz especular Reunir todos los conceptos Materiales en el mundo real Propiedades de los materiales Añadir luz a los materiales Calcular los efectos de luz ambiente Efectos difusos y especulares Añadir luz a una escena Activar la iluminación Establecer el modelo de iluminación Establecer las propiedades del material Usar una fuente de luz Posición de la luz Normales de superficie Especificar un normal Normales de unidad Buscar un normal Establecer una fuente Establecer las propiedades de los materiales Especificar los polígonos Efectos de iluminación Brillos especulares Luz especular Reflectancia especular Exponente especular Promediar normales Reunir todos los conceptos Crear un foco Dibujar un foco Sombras ¿Qué es una sombra? Código de aplastamiento Un ejemplo de sombra Volver a visitar el mundo de esferas Referencia 6. Más sobre colores y materiales Fusiones Combinar colores Cambiar la ecuación de fusión Suavizado de bordes Muestreo múltiple La niebla Búfer de acumulación Otras operaciones de color Máscaras de color Operaciones de color lógicas Prueba alpha Tramado Referencia 7. Tratamiento de imágenes con OpenGL Mapas de bits Un ejemplo de mapa de bits Establecer la posición de la trama Dibujar el mapa de bits Paquetes de píxeles Mapas de píxeles Formatos de píxeles empaquetados Un ejemplo más colorido Movimiento de píxeles Guardar píxeles Más diversión con píxeles Zoom de píxel Transferencia de píxeles Mapa de píxeles El subconjunto de procesamiento de imágenes Canal de procesamiento de imágenes Matriz de color Búsqueda de color Convoluciones Histograma Referencia 8. Trazado del mapa de texturas: elementos b