He estado aprendiendo programación de gráficos por algún tiempo usando OpenGL y Linux. Estoy bastante familiarizado con la mayoría de los conceptos, pero realmente me gustaría ampliar mi conocimiento y eventualmente seguir una carrera en el desarrollo de juegos, especialmente el desarrollo de motores de juegos.
Hasta ahora me parece que la mayoría de los estudios de juegos hacen juegos para Windows usando DirectX.
Editar: Sé que la pregunta OpenGL vs DirectX se ha hecho aquí antes, pero no he encontrado una respuesta en la perspectiva que quiero.
Edición 2: después de leer todas las respuestas / comentarios, he decidido seguir profundizando en los gráficos con OpenGL / GLSL, pero también intentaré jugar con DX, solo para tener una comprensión básica de la API. Me gustaría agradecer a todos por las respuestas y la información que me han dado.
fuente
Respuestas:
Realmente no importa. Los conceptos centrales son los mismos en ambos, especialmente ahora que los sombreadores de píxeles son la norma. Y dado que la mayoría de los juegos son multiplataforma, probablemente usarán un subconjunto de funciones que son similares en ambos idiomas. Mientras pueda escribir sombreadores en glsl o hlsl, estará bien.
Dicho esto, el número de puestos de "desarrollo de motores de juego" es pequeño. La mayoría de las empresas usan algo fuera de la plataforma. Para aquellas posiciones que existen, incluso menos de ellas son de nivel de entrada. La mayoría de los programadores de juegos de nivel básico no escriben ningún código relacionado con gráficos (aparte de los sombreadores) porque todo se ha abstraído.
fuente
Todo depende del trabajo que desea / obtendrá. Probablemente piense en un trabajo en el mercado de PC donde DX es el rey. Solo recuerde que la mayoría de las compañías AAA apuntan al mercado de consolas donde las API son bastante específicas.
La PS3, por ejemplo, tiene extensiones propietarias de su implementación de OpenGL ES.
OpenGL está creciendo en el espacio móvil. Ahora está disponible en todas las plataformas modernas, excepto Windows Phone 7.
Actualmente, solo OpenGL ES está disponible en este espacio. Pero los chips PowerVR más potentes vienen con soporte para OpenGL 4 y DX11.
Tus habilidades OpenGL son de oro. Puede reconvertir a DX para obtener un trabajo que lo requiera. Pero mientras tanto, recuerde que OpenGL es el rey en la cantidad de dispositivos y plataformas donde está disponible.
Editar : Además, cada vez más empresas tienden a usar motores existentes y, a menudo, incluso los desarrolladores de juegos principales son seleccionados cada vez más de las API de bajo nivel. Siempre es mejor tener un buen conocimiento de las API nativas cuando se enfrentan a errores y comportamientos extraños en plataformas específicas. Pero todo se reduce a los conceptos, y como otros señalaron DX y OpenGL en el núcleo requerirán el conocimiento de los mismos conceptos.
Editar : como ya está familiarizado con OpenGL y probablemente con sombreadores, debería probar OpenCL ... Esta API tiene el potencial de convertirse en la próxima gran novedad en la computación paralela.
Lo menciono porque los núcleos de OpenCL usan tipos de datos que son interoperables con OpenGL y son fáciles de entender para los desarrolladores de OpenGL. Eche un vistazo a eso y vea si puede adquirir algo de experiencia con una gran solución de computación general (actualmente está integrada en la física de bala, por ejemplo).
fuente
Estoy de acuerdo, que realmente no importa qué API aprendas. Es importante conocer los conceptos básicos.
Al mirar el desarrollo de juegos, Windows no es la única plataforma objetivo. Como he escuchado, Apple está creciendo como una plataforma objetivo, pero las consolas también son muy importantes. Las consolas normalmente tienen su propia API gráfica especializada (creo que lo están haciendo solo para molestarnos). Si bien las API de consola tienden a tener más en común con OpenGL que con DirectX, todavía no es una gran diferencia.
Ve con lo que sea que funcione para ti.
fuente
¿Qué tal la perspectiva de un profesor de desarrollo de juegos?
Si tiene los conceptos básicos de OpenGL, entonces, por TODO medio, aventúrese en el mundo de DirectX (tenga en cuenta que va a DX) que Dx9 todavía se está utilizando en el desarrollo por razones de compatibilidad, ya que las plataformas más antiguas (específicamente XP) no admiten los gráficos más nuevos. tubería en Dx10 y Dx11. (eso debería leerse como una recomendación de comenzar en Dx9 y luego observar las diferencias en Dx10 y luego 11 a medida que avanza) Eso también lo hará más redondeado.
Idealmente, querrá pasar un tiempo de calidad en HLSL y CG (tenga en cuenta que estos dos lenguajes de sombreador aparentemente diferentes son en realidad el mismo idioma (uno está calificado por Microsoft y el otro por Nvidia), entendiendo cómo funcionan los sombreadores de vértices y fragmentos (píxeles) ser un gran activo para usted y para cualquier compañía de juegos para la que vaya a trabajar (suponiendo que esté trabajando en sistemas de representación o subsistemas y no en código AI ;-)
Ogre3D es un motor de renderizado de código abierto que admite ambos subsistemas gráficos (OpenGL / DirectX) y se usa en muchos juegos ... debido a que la fuente está disponible de forma gratuita, puede disfrutar de explorarla y ver en comparación cómo las llamadas a OpenGL difieren de las llamadas a DirectX.
También lo recomendaría porque, como ya ha pasado algún tiempo en OpenGL, puede pinchar en WebGL, lo que parece que va a explotar en un futuro muy cercano.
¡Espero que ayude!
fuente
Leí recientemente que John Carmack recomienda DirectX por el simple hecho de que Microsoft, por un tiempo, se puso al día con openGL y al hacerlo crearon un producto competitivo y empujaron el sobre mientras las personas de OpenGL pasaban un tiempo discutiendo y diseñando por comité permitiendo que DirectX pulirse y, supongo, es más fácil trabajar con él pero seguir con openGL.
http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom,12372.html
Quizás otra opción a considerar si le gustan los gráficos en general y lo que le preocupa es lo que está sucediendo en el espacio incrustado.
Trabajo en el espacio incrustado usando Linux y WinCE. Fui ex arquitecto de Ford SYNC (estuve allí durante 6 años) y ahora trabajo en CUE de GM (la respuesta de GM a Ford SYNC). Ford SYNC no usa openGL o DirectX. Ford, en cambio, optó por el script Flash & Action; no estoy seguro de qué hace Flash debajo del capó, pero es lento como el infierno; JD Powers le dio una calificación baja. El CUE de GM es todo Linux y openGL ES y aunque el GM CUE tiene un procesador iMX más nuevo, el rendimiento de las animaciones en openGL en Linux es asombroso. CUE / openGL es mucho más rápido. Nuevamente, Ford paralizó su sistema con Adobe Flash.
Por lo tanto, si está buscando triunfar en los juegos pero está preocupado por la naturaleza competitiva pero aún adora este tipo de trabajo, tal vez busque opciones que amplíen su currículum. Según mi experiencia, al menos en el mundo integrado, WinCE no parece utilizar tanto DirectX. (WinCE tiene una API ligeramente diferente que NT podría ser parte de esa razón). OpenGL está en todas partes en el mundo incrustado y la gente está haciendo más cosas como tabletas, información y entretenimiento automotriz está de moda en este momento, y por supuesto teléfonos inteligentes ...
fuente
Diría que probablemente sea bueno en su currículum el poder decir que ha trabajado con ambos, independientemente de en qué se haya especializado.
Lo digo porque, como con cualquier cosa, se trata más de técnicas generales que del conocimiento de API / sintaxis más allá de cierto punto. Debe poder hacer cosas y saber cómo moverse, pero no tiene que haber implementado grandes piezas en ambas API: s. (Eso es O (n * m), que no escala ...). Conocer un poco las API y conocer diferentes técnicas (es decir, O (n + m)) funciona y será útil.
Por supuesto, también obtendrá bonificaciones por hacer algo "avanzado" en DX, ya que muestra que tiene un conocimiento API más profundo, pero necesita algunas técnicas avanzadas en cualquier caso, para demostrar que sabe cómo deben conectarse las cajas (ignorando las palabras mágicas específicas que tienes que decir para hacerlo).
Es lo mismo con cualquier API (3d o de otro tipo), o cualquier lenguaje de programación, realmente.
fuente
Descubrí que DirectX es más difícil de aprender y, por lo tanto, una mejor habilidad. Directx generalmente tiene un mejor soporte por parte de los fabricantes de tableros, sin embargo, Microsoft no publica tantas actualizaciones para aprovechar esos avances (y solo una subpoblación selecta de jugadores hardcore realmente usa esos tableros). Con respecto al desarrollo del juego, todas las principales plataformas de juego usan sus propios motores gráficos patentados ... xbox -> DirectX Box :) Conocer conceptos 3D, mallas, iluminación, transformaciones, etc., es una habilidad que es igual para todos ellos.
fuente
Si conoce uno, puede recoger fácilmente el otro.
Si conoce OpenGL, puede programar fácilmente para teléfonos inteligentes (Android y iPhone) más win / Linux / mac.
DirectX es solo Win / Xbox. Entonces, a menos que desee apuntar a Xbox, le diría que permanezca con OpenGL, ya que puede apuntar a más plataformas.
fuente
Prefiero OPENGL Considere, por ejemplo, Android, el sistema operativo móvil utiliza OPENGL. Hay tantos motores de juegos desarrollados en base a la plataforma OPENGL.
fuente