¿Debería continuar estudiando OpenGL o simplemente cambiarme a DirectX para tener una mejor oportunidad de conseguir un trabajo en la industria del juego? [cerrado]

29

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.

adivasile
fuente
Una versión generalizada de esta pregunta podría dar algunas buenas respuestas en programmers.stackexchange.com ...
Macke
1
Básicamente, un chico de OpenGL me enseñó los puntos más finos de los sombreadores DX que nunca ha hecho HLSL. Mientras sepa que "fragment shader" significa "pixel shader", los conceptos son más o menos los mismos; P
drxzcl
IIRC, DirectX se hizo un poco más parecido a OpenGL en la versión 8 o 9. Antes de eso, DirectX a veces era criticado por ser innecesariamente difícil de usar. Las API siguen siendo diferentes, pero los enfoques generales deberían ser bastante similares. Descargo de responsabilidad: tampoco soy un experto.
Steve314
@Macke - El asesoramiento profesional está fuera del tema @ Programadores. Probablemente esto sea demasiado específico, pero las preguntas generales de carrera serán sobre el tema @ Asuntos profesionales (actualmente propuesto en el área 51). Por favor, vaya y comprométase a apoyar este SE
Chad
Las probabilidades abrumadoras son incluso si ingresa a la industria, no será un programador de gráficos y no importará en lo más mínimo si conoce una API, la otra, ambas o ninguna. Más allá de eso, depende de la empresa y el proyecto. D3D se usa mucho más comúnmente en el espacio de PC, GL | ES es completamente dominante en el espacio móvil, y todas las consolas usan API patentadas que realmente no puedes aprender por tu cuenta.
Sean Middleditch

Respuestas:

28

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.

Tétrada
fuente
1
¿Qué hacen la mayoría de los programadores de nivel básico? ¿En estudios grandes, medianos o pequeños?
Quazi Irfan
Esa es una pregunta separada. gamedev.stackexchange.com/questions/5538/…
Tetrad
1
Solo para agregar una respuesta más general, en mi experiencia, los programadores junior tienden a comenzar en el juego, ui, hud y trabajar desde allí, el juego es un punto de entrada popular.
JuniorDeveloper1208
Los menús de integración de activos y la interfaz de usuario son puntos de entrada aún más comunes desde mi experiencia.
Coyote
Chicos, no comencemos un largo hilo sobre esa pregunta en particular en los comentarios aquí. Esas son respuestas perfectamente buenas a la pregunta a la que me vinculé.
Tetrad
10

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).

Coyote
fuente
OpenGL, que es un estándar de la industria, inspiró otras bibliotecas y API. No debes descuidar su importancia. Pero, por otro lado, no debes detenerte en una cosa y si fuera tú, vería API y motores de nivel superior que abstraen OpenGL y DirectX.
Coyote
Estoy familiarizado con OpenCL. He estado trabajando en un proyecto paralelo, construyendo un motor de física (rudimentario, principalmente para fines de aprendizaje) y he usado un poco de OpenCL para hacerlo más rápido, pero aún no he obtenido resultados sorprendentes (en algunos casos, incluso lo hizo peor)
adivasile
Esa es una señal de un buen intento;) Eche un vistazo a la implementación en el motor de bala. De todos modos, buena suerte con tus proyectos.
Coyote
7

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.

mrbinary
fuente
1
XBox probablemente hace cosas de la manera DirectX ...?
Macke
Sí, PS3 usa PSGL. Pero, X360 usó DirectX ya que están en la PC, aunque no estoy seguro de eso, solo una suposición.
Quazi Irfan
No tengo experiencia en Xbox, pero según Wikipedia, su API se basa en DirectX. En PS3, PSGL es solo una de las API disponibles.
mrbinary
X360 usa una API que está cerca de DX9, con algunas peculiaridades para acomodar el hecho de que tiene una cantidad relativamente pequeña de memoria relativamente rápida.
drxzcl
6

¿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!

Robert French
fuente
No diría que WebGL explotaría en el futuro, al menos no en un futuro cercano. Es solo otra forma de renderizar 3D en navegadores sin ningún complemento.
Quazi Irfan
Con los principales proveedores agregando soporte HTML5 y JS a sus productos (Visual Studio) y compañías como Adobe implementando Edge (¿HTML5 JS Flash killer?) Creo que veríamos mucho más contenido basado en la web que aprovecha la aceleración de hardware.
Robert French el
4

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 ...

Eric
fuente
+1 por mencionar el espacio incrustado. No había pensado en entrar en gráficos para sistemas embebidos (excepto para plataformas móviles), pero después de investigar un poco, encontré que era una opción que valía la pena considerar. Hace unos años me interesaron las plataformas integradas, pero otras cosas se interpusieron en el camino, así que terminé abandonándolas bastante pronto.
adivasile
2

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.

Macke
fuente
1

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.

MartyTPS
fuente
He encontrado muy poca diferencia conceptual entre DX9-ish y openGl "moderno" (sin usar glBegin). Le agradecería que piense por qué uno de los dos es "más fácil" o "más difícil" que el otro.
drxzcl
1
De hecho, encuentro que OpenGL es más fácil de aprender los conceptos básicos realmente fundamentales, pero tan pronto como pasas a VBO y sombreadores, D3D se vuelve mucho más fácil (la falta de extensiones lo hace más consistente en una base de hardware más amplia también).
Maximus Minimus
Esa es mi experiencia también, de ahí la pregunta.
drxzcl
1

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.

usuario697111
fuente
-4

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.

usuario907629
fuente