¿Vale la pena comprar la OpenGL Super Bible (7a edición)?

No leí la OpenGL Super Bible, por lo que no puedo garantizar su eficacia, pero escribí un pequeño procesador de OpenGL con sombreado basado en la física en el pasado para aprender, presentando cosas como renderizado diferido y sombras.

Cuando aprendí, este tutorial me ayudó muchísimo, ya que explica muchos de los conceptos de los gráficos 3D y va más allá, hablando de cosas como la textura y la carga de objetos. Además, el manual de referencia de OpenGL describe cada función con gran detalle, y una hoja de referencia de OpenGL puede ayudarlo a ver las funciones disponibles y dónde se encuentran en la tubería de gráficos.

Sin embargo, lo que encontré es que la cantidad de funciones de OpenGL que necesita saber es muy limitada, y muchas solo se usan una o dos veces en todo el código, suponiendo que tenga un contenedor decente de alto nivel para abstraer la API de representación subyacente. Si bien OpenGL es de hecho una API de C, que se fusiona de manera más natural con C ++, probablemente no obtendrá mucho al cambiar a C ++ si sus características principales (administración manual de memoria, rendimiento, acceso directo a memoria, etc.) no le interesan. Java proporciona una compatibilidad bastante buena con OpenGL, y el OpenGL que aprende a través de Java puede transferirse directamente a cualquier otro idioma.

Quizás el principal inconveniente de aprender a través de Java es que muchos tutoriales gráficos enseñan a través de C o C ++. Sin embargo, si puede leer el código C ++, puede traducirse fácilmente a Java equivalente.

Sin embargo, después de aprender los conceptos básicos de OpenGL, el lenguaje de programación que usa se vuelve mucho menos relevante. Empiezas a aprender más sobre sombreadores, que están escritos en GLSL, sobre conceptos gráficos que no solo son independientes del idioma, sino que a menudo son independientes de la API (como Antialiasing, Texture Filtering, MipMapping, shadows, etc.), y bastante rápido ya no es la API de gráficos que se vuelve desafiante, pero los conceptos de alto nivel a los que desea aplicarlos (“ Conozco las funciones para crear un framebuffer, pero ¿cómo combino esto para crear un gbuffer con renderizado diferido y variedad de materiales?”).

Para aprender estos conceptos, aproveché mi experiencia mientras trabajaba en motores de juego de alto nivel (como Unity y Unreal), que hacen un gran trabajo al presentarle los elementos necesarios para crear una experiencia visualmente creíble. Una vez que supe qué elementos quería implementar, descubrí que Internet contiene una gran cantidad de información gratuita sobre cómo implementar estos conceptos y cómo funcionan.

De todos modos, si bien esto no respondió directamente a la pregunta, espero que al menos sea un poco útil 🙂

Descargo de responsabilidad: soy dueño de la sexta edición, no la séptima. Todavía :). Lo recomiendo de todo corazón. Hace solo unos meses comencé a aprender OpenGL desde cero, y aunque tengo algunas quejas menores sobre este poderoso libro, sigue siendo un recurso tremendo.