Tengo una sólida formación en C / Objective-C. Quiero aprender OpenGL. ¿Cómo podría empezar?

El libro que más me ayudó fue “Programación 3D para iPhone, desarrollo de aplicaciones gráficas con OpenGL ES”, de Philip Rideout, que, como mencionas Objective-C, debería escribir tu callejón. (Objective C, para aquellos que no están familiarizados, es una extensión del lenguaje de Apple a C para dispositivos iOS y Android)

Fue escrito antes del kit GL desarrollado por Apple, por lo que le brindará más información interna de OpenGL en el trabajo.

Aprendiendo OpenGL ES para iOS, una Guía práctica para la programación moderna de gráficos en 3D, Erik M. Buck le brindará más del enfoque de GLKit, pero menos en el lado abierto de GL).

Por supuesto, ambos son OpenGL ES, no el OpenGL completo. Alguien con más conocimientos que yo podría corregirme al respecto, pero tengo la sensación de que las diferencias no son dramáticas.

Una cosa que te va a obstaculizar mucho si es nuevo para ti (lo fue para mí) son los conceptos de álgebra lineal. El libro que más me ayudó fue “3D Math Primer para gráficos y desarrollo de juegos” por Fletcher Dunn

Es una progresión, una cena de 7 platos. No te lo comes todo de una vez. Así que no esperes que haga clic durante la noche. Viene en oleadas.

Debe tener en cuenta que casi todos los programadores de gráficos trabajan en C ++ (incluido el objetivo C ++) debido a la comodidad que brinda la sobrecarga del operador.

Pero la progresión vale la pena. Puede hacer cosas con las GPU a las que los códigos limitados a la CPU solo pueden asombrar.

Hay 2 escuelas de práctica. Si usted es principalmente un tipo que simplemente coge las bibliotecas de la estantería y reúne cosas, puede sobrevivir con un conocimiento muy ligero. La ventaja es que obtienes cosas rápidamente. Por lo tanto, si tiene prisa, el libro de Erik M. Buck le proporcionará los programas más rápidos y eficientes con el menor conocimiento de su parte (que es, por supuesto, el lado negativo. Es el menos conocimiento de su parte).

Pero si se ejecuta la gama, aprenderá el lenguaje de sombreado, y un montón de matemáticas bastante avanzadas, álgebra matricial, cuaterniones, algunas cosas geniales por sí mismas y técnicas inmensamente poderosas para hacer las cosas.

Lo que Open GL hace es bastante sencillo. Mueve el código al procesador gráfico y lo envía a procesar. Para personalizar lo que hace ese código, estudiará Open GL Shading Language, que es lo que le brinda la mayor capacidad. (O, si estás dispuesto a apegarte a los productos iOS, Metal)

Puedo recomendar este tutorial: OpenGL paso a paso. Además, puedo recomendar comprar el OpenGL Superbible. Es una gran referencia y también da una buena visión general de OpenGL moderno. La API de OpenGL está muy saturada debido a la compatibilidad con versiones anteriores, lo que dificulta que un principiante descubra cuál es la mejor manera de hacer algo con OpenGL moderno. El Superbible ayuda mucho ya que se enfoca en las partes actualizadas de la API y también da algunos consejos sobre cuáles son las ventajas y desventajas de ciertas funciones sobre otras.
Un consejo si busca materiales de aprendizaje y tutoriales: no se moleste con los tutoriales basados ​​en OpenGL <3.3. Si ve algo como: glBegin / glEnd, glVertex3f, glLoadIdentity, etc., el tutorial usa la API en desuso. Creo que es una pérdida de tiempo aprender la API antigua, ya que probablemente no la usará en ningún sistema productivo.

Aqui tienes !!
Aprenda OpenGL, un extenso recurso tutorial para aprender OpenGL moderno
Tutoriales para OpenGL moderno (3.3+)
Los tutoriales son increíbles, tienen una explicación detallada que es fácil de entender, todo el código fuente de cada tutorial.
Están estructurados de gran manera. Y tienen de todo, desde principiante hasta nivel avanzado.

Siguiendo un tutorial. NeHe es probablemente el más popular.

Nuevas producciones – Todo OpenGL

Tutorial de OpenGL para iOS: OpenGL ES 2.0 – Ray Wenderlich

Este tutorial es específicamente para iOS, pero la información allí es bastante general. Y el sitio tiene mucho más sobre cosas que encontrarás útiles e interesantes.

Construya un trazador de rayos que aprenderá mucho en el proceso: