- Portada
- Portadilla
- Legal
- Agradecimientos
- Sobre los autores
- Contenido
- Prefacio
- Introducción
- PARTE 1 Open GL básico
- Capítulo 1 La exploración comienza... de nuevo
- ¿Por qué hacer juegos?
- El mundo de los juegos en 3D
- Los elementos de un juego
- ¿Qué es OpenGL?
- Historia de OpenGL
- Arquitectura de OpenGL
- Función fija contra Programabilidad
- El modelo de obsolescencia
- Características obsoletas en este libro
- Bibliotecas relacionadas
- GLUT
- SDL
- Un vistazo rápido
- Resume
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 2 Creación de una aplicación sencilla de OpenGL
- Acerca de la plataforma
- Introducción a WGL
- El contexto de render
- wglCreateContext
- wglDeleteContext
- wglMakeCurrent
- wglCreateContextAttribsARB
- Obtención del contexto actual
- Formatos de pixel
- Tabla 2.1 Banderas de formato de pixel
- nSize
- dwFlags
- iPixelType
- cColorBits
- Configuración del formato de pixel
- Una aplicación de OpenGL
- OpenGL en pantalla completa
- Tabla 2.2 Campos DEVMODE importantes
- La clase Example
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 3 Estados y primitivas de OpenGL
- Funciones de estado
- Consulta de estados numéricos
- Activación y desactivación de estados
- glIsEnabled( )
- Consulta de valores de cadena
- Tabla 3.1 Parámetros glGetString( )
- glGetStringi( )
- Localización de errores
- Colores en OpenGL
- Tabla 3.2 Códigos de error de OpenGL
- Manejo de primitivas
- Modo inmediato (Immediate Mode)
- Tabla 3.3 Parámetros válidos de glBegin( )
- Tabla 3.4 Funciones válidas glBegin( ) /glEnd( )
- Vertex arrays
- Tabla 3.5 Banderas tipo array
- Habilitación de arrays
- Trabajo con arreglos
- Renderizado usando vertex arrays
- glDrawArrays( )
- glDrawElements( )
- glDrawRangeElements( )
- glMultiDrawArrays( )
- Vertex buffer objects
- Generación de un nombre
- Vinculación del búfer
- Llenado del búfer
- Tabla 3.6 Valores de frecuencia del búfer
- Tabla 3.7 Valores de acceso del búfer
- Render con búferes y vertex arrays
- Dibujo de puntos en 3D
- Modificación del tamaño de un punto
- Anti-aliasing de puntos
- Un ejemplo de puntos
- Dibujo de líneas en 3D
- Modificación del ancho de línea
- Anti-aliasing de líneas
- Ejemplo del ancho de línea
- Dibujo de triángulos en 3D
- Ejemplo con el modo de polígono
- Culling de caras de polígonos
- Anti-aliasing de polígonos
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 4 Transformaciones y matrices
- Cómo entender las transformaciones de coordenadas
- Tabla 4.1 Transformaciones en OpenGL
- Coordenadas de visualización
- Transformaciones de visualización
- Transformaciones de modelado
- Transformaciones de proyección
- Transformaciones de ventana de visualización
- Funciones fijas de OpenGL y matrices
- Matriz modelview
- Traslación
- Rotación
- Escalas
- Pilas de matrices
- Ejemplo del robot
- Proyecciones
- Ortográfica
- Perspectiva
- Configuración de la ventana devisualización
- Ejemplo de proyección
- Manipulación del punto de visualización
- Uso de gluLookAt( )
- Uso de glRotate( ) y glTranslate( )
- Creación de sus propias rutinas personalizadas
- Uso de sus propias matrices
- Carga de su matriz
- Multiplicación de matrices
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 5 Extensiones de OpenGL
- ¿Qué es una extensión?
- Nomenclatura de la extensión
- Cadenas de nombre
- Tabla 5.1 Prefijos en las extensiones de OpenGL
- Funciones y fichas
- Obtención de un punto de entrada a las funciones
- Extensiones en Windows
- Búsqueda de extensiones compatibles
- Extensiones de WGL
- Definición de fichas
- Introducción a GLee
- Configuración de GLee
- Uso de GLee
- Uso de GLee con las extensiones básicas
- Extensiones en acción
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 6 Cambiando a un diagrama (pipeline) programable
- El futuro de OpenGL
- ¿Qué es GLSL?
- Vertex shaders
- Fragment shaders
- El lenguaje GLSL
- Estructura del shader
- Pre-procesador
- Variables
- Tabla 6.1 Directivas del pre-procesador
- Tabla 6.2 Tipos de datos en GLSL
- Tipos de datos
- Tabla 6.2 Tipos de datos en GLSL
- Estructuras
- Tabla 6.3 Operadores de GLSL
- Operadores
- Tabla 6.4 Calificadores del tipo de almacenamiento
- Calificadores de variable
- Tabla 6.5 Calificadores de interpolación
- Tabla 6.6 Calificadores de parámetro
- Entradas del shader
- Uniformes
- Atributos de vértice
- Declaraciones
- Constructores
- Tabla 6.7 Constructores de GLSL
- Reducción
- Definición de funciones
- Funciones integradas
- Funciones obsoletas de GLSL
- Tabla 6.8 Funciones integradas en GLSL
- Uso de shaders
- Creación de objetos en GLSL
- Tabla 6.9 Valores pname de glGetShaderiv( )
- Tabla 6.10 Valores pname para glGetProgramiv( )
- Consulta de los registros de información
- Envío de datos al shader
- Paso de datos a variables uniformes
- Paso de datos a los atributos de vértice
- La clase GLSLProgram
- Sustitución del diagrama de función fija
- Cálculo de las transformaciones de vértice
- Aplicación de colores
- Manejo de sus propias matrices
- La Biblioteca Kazmath
- Ejemplo modificado del robot
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 7 Mapeo de texturas
- Una perspectiva del mapeo de texturas
- Uso del mapa de textura
- Objetos de textura
- Creación de objetos de textura
- Eliminación de objetos de textura
- Especificación de texturas
- Texturas en 2D
- Tabla 7.1 Formatos internos de textura más comunes
- Tabla 7.2 Formatos de pixeles de textura
- Tabla 7.3 Tipos más comunes de datos de textura
- Texturas en 1D
- Texturas en 3D
- Texturas de mapa de cubos
- Filtrado de texturas
- Tabla 7.4 Valores para el filtrado de texturas de minificación
- Coordenadas de textura
- Aplicación de las coordenadas de textura
- Parámetros de textura
- Modos de envoltura de textura
- Tabla 7.5 Parámetros de textura
- Mipmaps
- Mipmaps y la biblioteca de utilidades de OpenGL
- Carga de archivos de imagen Targa
- El formato de archivo Targa
- Tabla 7.6 Códigos del tipo de imagen
- Tabla 7.7 Origen de las imágenes Targa
- La clase TargaImage
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- PARTE 2 Más allá de lo básico
- Capítulo 8 Iluminación, mezclado y niebla
- Iluminación
- Normales
- El modelo de iluminación
- Materiales
- Iluminación en GLSL
- Mezclado
- Tabla 8.1 Factores de mezcla
- Funciones de mezclado separadas
- Color constante de mezclado
- Niebla
- Ejemplo de niebla
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 9 Más sobre el mapeo de texturas
- Subimágenes
- Copiado desde el búfer de color
- Mapeo del entorno
- Mapeo de esfera
- Mapeo reflectante de cubos
- Pruebas alfa
- Texturizado múltiple
- Unidades de textura
- Texturizado múltiple en GLSL
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 10 Mejora del rendimiento
- Frustum culling
- Ecuación del plano
- Definición del frustum
- Tabla 10.1 Filas de origen para extraer los planos del frustum
- Prueba de un punto
- Prueba de una esfera
- Aplicación del frustum culling
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 11 Despliegue de texto
- Fuentes asignadas por textura en 2D
- Generación de las coordenadas de textura
- Ejemplo de fuentes asignadas por textur
- Fuentes en 2D con FreeType
- La biblioteca FreeType
- Inicialización de FreeType y carga de una fuente
- Configuración del tamaño de fuente
- Generación de texturas de glifo
- Tabla 11.1 Banderas de carga útiles en FreeType
- Tabla 11.2 Modos de render en FreeType
- Liberación de recursos en FreeType
- Ejemplo de FreeType
- Una nota sobre fuentes en 3D
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 12 Búferes de OpenGL
- ¿Qué es un búfer de OpenGL?
- Tabla 12.1 Valores de máscara válidos
- Limpieza de búferes
- Prueba de tijera
- Los búferes de color
- Enmascaramiento de color
- Establecimiento del color de limpieza
- El búfer de profundidad
- Control de la prueba de profundidad
- Tabla 12.2 Funciones de comparación de la profundidad
- Desactivación de la escritura en el búfer de profundidad .
- Problemas potenciales
- Representación de superficies transparentes
- Búfer de plantilla
- Tabla 12.3 Funciones de plantilla
- Tabla 12.4 Operaciones de plantilla
- Resumen
- Lo que se aprendió
- Preguntas de repaso
- Por su cuenta
- Capítulo 13 El juego final
- El formato del modelo MD2
- El encabezado de MD2
- Carga de los datos del modelo
- Animación del modelo MD2
- Render del modelo
- Creación de explosiones
- Puntos Sprite
- Uso de puntos Sprite
- Ogro Invasion!
- Una nota sobre la detección de colisiones
- Resumen
- Preguntas de repaso
- Por su cuenta
- Apéndice A Respuestas a las preguntas de repaso y ejercicios
- Apéndice B Lecturas adicionales
- Apéndice C Contenido del cd
- Índice