Quiero comenzar a aprender el desarrollo de juegos C ++ y OpenGL. ¿Qué recursos debería considerar para tener en cuenta el desarrollo multiplataforma (Mac OSX, Linux y Windows)?

Otros dieron buenas respuestas. No comience la programación del juego con OpenGL (o renderizado en absoluto). Sin embargo, si desea ser un programador de motores de juegos , entonces y solo entonces, recomendaría construir su propio motor (o al menos algunos de los subsistemas). Si desea hacer una programación gráfica (¡programador gráfico! = Programador del motor en la mayoría de los casos), concéntrese más en las matemáticas e impleméntelo con sombreadores para algunos motores existentes porque no tratará mucho con OpenGL / Direct3D / vulkan ya que el motor se resumió aquellos. Puede escribir algunas demostraciones simples en OpenGL / Direct3D después de obtener ese microfacet BRDF correcto.

Para responder a tu pregunta, necesito saber qué papel en la programación de juegos quieres tomar. Como no lo sé, aquí hay algunos roles posibles:

  • Programador del motor del juego: Lea Arquitectura del motor del juego: Jason Gregory, Jeff Lander, Matt Whiting: 9781568814131: Amazon.com: Libros. Cubre algunos conceptos básicos de renderizado lo suficiente para un programador de motores de juegos. Además, lea los libros que otras personas sugirieron aquí.
  • Programador de gráficos: lea los libros de GPU Pro y, lo más importante, los trabajos / cursos de SIGGRAPH. También debe elegir un libro sobre su API de gráficos favorita (no sé sobre OpenGL ya que soy un chico de Direct3D, pero la búsqueda rápida en Amazon le dará una respuesta).
  • Programador de juego: Olvídate del renderizado, motor personalizado, OpenGL o cualquier otra cosa similar. Descarga Unity / UE4 y comienza a expresar tu creatividad.

Si bien no soy un desarrollador de juegos, he escrito juegos para experimentos. Al mismo tiempo, tengo algunos amigos que escriben juegos. Si quieres escribir juegos, estás yendo por el camino equivocado, en mi opinión. Si bien aprender OpenGL es una gran idea, no es lo que se usa en los juegos (directamente). Usas un motor de juego. Yo uso OGRE3D, que ni siquiera es un motor de juego, sino un motor gráfico de nivel superior. Pero encontrarás gameplay3D, Unreal, Unity y muchos otros. Además, si quieres comenzar a aprender, no creo que la multiplataforma sea tan importante. Sin embargo, puede intentar escribir la mayor parte de su código sin ninguna dependencia del sistema operativo si tiene cuidado y si utiliza un motor que admita plataformas cruzadas. Si quiere aprender OpenGL porque quiere entrar en la investigación de Gráficos por computadora o porque realmente quiere aprender sobre gráficos, entonces es una buena idea. Sin embargo, la gente no escribe juegos directamente en OpenGL en estudios de juegos AAA o incluso en estudios pequeños … Si bien encontrará libros sobre “Programación de juegos con DirectX” o “Programación de juegos con OpenGL”, es solo una forma de marketing para conseguirle para comprar el libro En realidad, los libros tratan más sobre DirectX y OpenGL.

Comenzar a aprender C ++ y OpenGL para implementar un juego no es el mejor enfoque. Tanto C ++ como OpenGL son herramientas grandes y complejas. Debes enfocarte en una cosa a la vez y aprender C ++ y luego aprender OpenGL. Intentar aprender ambas cosas mientras intentas escribir un juego es más probable que termine en frustración. Tenga en cuenta que OpenGL no requiere C ++. OpenGL tiene enlaces para muchos idiomas, y podría usar cualquier idioma con el que ya se sienta cómodo si tiene la intención de usar OpenGL.

En general, los juegos son un gran sistema complejo. ¿Qué aspecto de escribir juegos te interesa? ¿El motor de renderizado real? ¿Optimización de las rutinas matemáticas? El juego juega? ¿La obra de arte?

Una excelente manera de aprender a desarrollar un juego es involucrarse en uno existente. Hay una serie de juegos de código abierto existentes que están en desarrollo activo. Elija uno que sea similar al género de juegos que le interesan y comience a trabajar en el área que le interese. Esto le dará la oportunidad de aprender a desarrollar un juego y la capacidad de ver de inmediato los resultados de su trabajo.

Una vez que tenga suficiente experiencia, podría considerar escribir su propio juego desde cero si así lo desea.

Nunca entenderé por qué las personas que quieren ser programadores de juegos siempre quieren comenzar en modo difícil.

Si realmente quieres comenzar desde cero, obtén “Game Coding Complete: 3rd Edition” y trabaja en todo el libro. No solo lo lea, escriba el código para los diferentes capítulos y todo.

Cuando termines con eso, estarás en un buen lugar para comenzar a construir tus juegos desde cero en cualquier plataforma.

La cuestión es que no creo que sea una actividad para principiantes. Comience con las ruedas de entrenamiento puestas, use una herramienta que simplifique la mayor parte del proceso para usted y haga algunos juegos simples primero para que tenga una idea del proceso antes de sumergirse en “Build it from scratch mode”.

Porque la mayoría de las personas que comienzan en modo difícil simplemente se frustran y se rinden.

OpenGL en sí es multiplataforma.

Si no necesita ninguna interfaz de usuario específica del sistema operativo, también podría tener una aplicación solo para OpenGL.

En mi infancia, solía haber GLUT (GLUT – The OpenGL Utility Toolkit), que probablemente ofrece exactamente lo que estás buscando. La forma en que se inicia su aplicación puede no verse tan bonita como lo desea, pero GLUT hace bien su trabajo.

¡Todo lo mejor!
Dima

Para hacerlo más fácil, pruebe un marco
Recomendaría http://cocos2d-x.org, que es un marco basado en C ++ y OpenGL y funciona para casi todas las plataformas móviles y de escritorio

Use un motor de juego como Unity o Unreal, o si realmente quiere hacerlo usted mismo con C ++, use un contenedor compatible con las plataformas que desee.