• 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