Devo continuar estudando o OpenGL ou simplesmente mudar para o DirectX para me dar uma chance maior de conseguir um emprego na indústria de jogos? [fechadas]

29

Estou aprendendo programação gráfica há algum tempo usando o OpenGL e Linux. Estou bastante familiarizado com a maioria dos conceitos, mas gostaria muito de aprofundar meus conhecimentos e, eventualmente, seguir uma carreira em desenvolvimento de jogos, especialmente no desenvolvimento de mecanismos de jogos.

Até agora, parece-me que a maioria dos estúdios de jogos cria jogos para Windows usando o DirectX.

Edit: Eu sei que a pergunta OpenGL vs DirectX já foi feita aqui antes, mas não encontrei uma resposta na perspectiva que desejo.

Edit 2: Depois de ler todas as respostas / comentários, decidi continuar aprofundando os gráficos com o OpenGL / GLSL, mas vou tentar brincar com o DX também, apenas para ter um entendimento básico da API. Gostaria de agradecer a todos pelas respostas e insights que você me deu.

adivasile
fonte
Uma versão generalizada desta questão pode render algumas boas respostas no programmers.stackexchange.com ...
Macke
1
Eu basicamente aprendi os pontos mais delicados dos shaders DX por um cara do OpenGL que nunca fez HLSL. Desde que você saiba que "fragment shader" significa "pixel shader", os conceitos são praticamente os mesmos; P
drxzcl 27/10/11
IIRC, o DirectX tornou-se um pouco mais parecido com o OpenGL na versão 8 ou 9. Antes disso, o DirectX às vezes era criticado por ser desnecessariamente difícil de usar. As APIs ainda são diferentes, mas as abordagens gerais devem ser bastante semelhantes. Isenção de responsabilidade - também não sou especialista.
Steve314
@ Macke - O conselho de carreira está fora do tópico @ Programadores. Este é provavelmente muito específico, mas questões gerais de carreira será sobre o tema @ assuntos profissionais (atualmente propostas na área 51) Por favor, vá e se comprometem a apoiar este SE
Chad
As probabilidades impressionantes são, mesmo se você entrar no setor, não será um programador de gráficos e não terá importância se conhecer uma API, a outra, ambas ou nenhuma. Além disso, depende da empresa e do projeto. O D3D é muito mais usado no espaço do PC, o GL | ES é completamente dominante no espaço móvel, e todos os consoles usam APIs proprietárias que você realmente não pode aprender sozinho.
Sean Middleditch

Respostas:

28

Realmente não importa. Os conceitos principais são os mesmos em ambos, especialmente agora que os pixel shaders são a norma. E como a maioria dos jogos é multiplataforma, eles provavelmente usarão um subconjunto de recursos semelhantes nos dois idiomas. Contanto que você possa escrever shaders em glsl ou hlsl, você ficará bem.

Dito isto, o número de posições de "desenvolvimento de mecanismos de jogos" por aí é pequeno. A maioria das empresas usa algo da prateleira. Para as posições que existem, menos ainda são de nível de entrada. A maioria dos programadores de jogos iniciantes não escreve nenhum código relacionado a gráficos (exceto talvez shaders) porque tudo foi abstraído.

Tetrad
fonte
1
O que a maioria dos programadores iniciantes faz? Em estúdios grandes, médios ou pequenos?
Quazi Irfan 26/10/11
Essa é uma pergunta separada. gamedev.stackexchange.com/questions/5538/…
Tetrad
1
Apenas para adicionar uma resposta mais geral, na minha experiência, programadores juniores tendem a começar no jogo, interface do usuário, hud e trabalhar a partir daí, o jogo é um ponto de entrada popular.
JuniorDeveloper1208
Menus de integração de ativos e interface do usuário são pontos de entrada ainda mais comuns da minha experiência.
Coyote
Pessoal, não vamos começar um longo tópico sobre essa questão em particular nos comentários aqui. Essas são respostas perfeitamente boas para a pergunta a que vinculei.
Tetrad 27/10
10

Tudo depende do trabalho que você deseja / receberá. Você provavelmente pensa em um emprego no mercado de PCs onde o DX é o rei. Lembre-se de que a maioria das empresas AAA visa o mercado de console, onde as APIs são bastante específicas.

O PS3, por exemplo, possui extensões proprietárias para sua implementação OpenGL ES.

O OpenGL está crescendo no espaço móvel. Agora está disponível em todas as plataformas modernas, exceto no Windows Phone 7.

Atualmente, apenas o OpenGL ES está disponível neste espaço. Mas mais chips PowerVR poderosos estão chegando com suporte para OpenGL 4 e DX11.

Suas habilidades em OpenGL são de ouro. Você pode reconverter para o DX para conseguir um trabalho que exija isso. Entretanto, lembre-se que o OpenGL é o rei na quantidade de dispositivos e plataformas em que está disponível.


Editar : Além disso, mais e mais empresas tendem a usar os mecanismos existentes e, muitas vezes, até os principais desenvolvedores de jogos são cada vez mais selecionados nas APIs de baixo nível. É sempre melhor ter um bom conhecimento das APIs nativas quando você enfrenta bugs e comportamento estranho em plataformas específicas. Mas tudo se resume aos conceitos e, como outros apontaram, o DX e o OpenGL no núcleo exigirão conhecimento dos mesmos conceitos.


Edit : Como você já está familiarizado com o OpenGL e provavelmente com shaders, tente o OpenCL ... Essa API tem o potencial de se tornar a próxima grande novidade na computação paralela.

Estou mencionando isso porque os kernels do OpenCL usam tipos de dados que são interoperáveis ​​com o OpenGL e são simples de entender para os desenvolvedores do OpenGL. Dê uma olhada nisso e veja se você pode adquirir alguma experiência com uma ótima solução de computação geral (atualmente sendo integrada à física de balas, por exemplo).

Coiote
fonte
O OpenGL, sendo um padrão do setor, inspirou outras bibliotecas e APIs. Você não deve negligenciar sua importância. Mas, por outro lado, você não deve parar em uma coisa e, se eu fosse você, analisaria APIs e mecanismos de nível superior que abstraem o OpenGL e o DirectX.
Coyote
Eu estou familiarizado com o OpenCL. Eu tenho trabalhado em um projeto paralelo, construindo um mecanismo de física (rudimentar, principalmente para fins de aprendizado) e usei um pouco de OpenCL para torná-lo mais rápido, mas ainda não obtive resultados surpreendentes (em alguns casos, até piorou) #
274 adivasile
Isso é um sinal de uma boa tentativa;) Dê uma olhada na implementação no mecanismo de bala. De qualquer forma, boa sorte com seus projetos.
Coyote
7

Concordo que isso realmente não importa qual API você aprende. É importante conhecer os conceitos básicos.

Ao analisar o desenvolvimento de jogos, o Windows não é a única plataforma de destino. Como ouvi dizer, a Apple está crescendo como plataforma de destino, mas os consoles também são realmente importantes. Os consoles normalmente têm sua própria API gráfica especializada (acho que eles estão fazendo isso apenas para nos incomodar). Embora as APIs do console tendam a ter mais em comum com o OpenGL do que com o DirectX, ainda não há uma grande diferença.

Vá com o que for melhor para você.

mrbinary
fonte
1
XBox provavelmente faz coisas da maneira DirectX ...?
Macke
Sim, o PS3 usa PSGL. Mas, o X360 usou o DirectX como está no PC, embora não tenha certeza, apenas um palpite.
Quazi Irfan 26/10/11
Não tenho experiência no Xbox, mas de acordo com a Wikipedia, sua API é baseada em DirectX. No PS3, o PSGL é apenas uma das APIs disponíveis.
Mrbinary
O X360 usa uma API próxima ao DX9, com algumas peculiaridades para acomodar o fato de ter uma quantidade relativamente pequena de memória relativamente rápida.
drxzcl
6

E a perspectiva de um professor de desenvolvimento de jogos?

Se você possui os conceitos básicos do OpenGL, então, ALL, aventure-se no mundo do DirectX (observe o DX) que o Dx9 ainda está sendo usado no desenvolvimento por razões de compatibilidade, pois plataformas mais antigas (especificamente XP) não suportam os gráficos mais recentes gasoduto em Dx10 e Dx11. (isso deve ser uma recomendação para iniciar no Dx9 e depois observar as diferenças em Dx10 e 11 ao longo do progresso). Isso também o tornará mais completo.

O ideal é que você gaste algum tempo de qualidade em HLSL e CG (observe que essas duas linguagens de sombreador aparentemente diferentes são na verdade a mesma linguagem (uma marca da Microsoft e a outra da Nvidia) entendendo como os sombreadores de vértice e fragmento (pixel) funcionam. ser um grande trunfo para você e qualquer empresa de jogos em que trabalha (supondo que você esteja trabalhando na renderização de sistemas ou subsistemas e não no código da IA. ;-)

O Ogre3D é um mecanismo de renderização de código aberto que suporta os dois subsistemas gráficos (OpenGL / DirectX) e é usado em muitos jogos ... porque a fonte está disponível gratuitamente, você pode explorar e ver, por comparação, como as chamadas para o OpenGL diferem das chamadas para o OpenGL DirectX.

Eu também recomendaria que, porque você já passou algum tempo no OpenGL, cutucou o WebGL, que parece explodir em um futuro muito próximo.

Espero que ajude!

Robert French
fonte
Eu não diria que o WebGL explodiria no futuro, pelo menos não em um futuro próximo. É apenas outra maneira de renderizar 3D em navegadores sem nenhum plug-in.
Quazi Irfan 26/10/11
Com os principais fornecedores adicionando suporte a HTML5 e JS a seus produtos (Visual Studio) e empresas como a Adobe lançando o Edge (HTML5 JS Flash killer?), Acho que veríamos muito mais conteúdo baseado na Web que tira proveito da aceleração de hardware.
Robert French
4

Li recentemente que John Carmack recomenda o DirectX pelo simples fato de que a Microsoft, por algum tempo, adotou o openGL e, ao fazer isso, criou um produto competitivo e empurrou o envelope, enquanto o pessoal do openGL passava algum tempo discutindo e fazendo o design pelo comitê, permitindo o DirectX tornar-se polido e, acho, mais fácil de trabalhar, mas mantendo o openGL.

http://www.tomshardware.com/news/john-Carmack-DirectX-OpenGL-API-Doom.12372.html

Talvez outra opção a considerar se você gosta de gráficos em geral e para o que é worith é o que está acontecendo no espaço incorporado.

Trabalho no espaço incorporado usando Linux e WinCE. Eu era ex-arquiteto Ford SYNC (estava lá por 6 anos) e agora trabalho na CUE da GM (resposta da GM ao Ford SYNC). O Ford SYNC não usa openGL ou DirectX. Ford, em vez disso, optou pelo script Flash & Action; o que o Flash faz sob o capô, não tenho certeza, mas é lento como o inferno; A JD Powers deu uma nota baixa. O CUE da GM é todo Linux e openGL ES e, embora o GM CUE tenha um processador iMX mais recente, o desempenho das animações no openGL no Linux é impressionante. CUE / openGL é muito mais rápido. Mais uma vez, a Ford aleijou seu sistema com o Adobe Flash.

Portanto, se você deseja entrar em jogos, mas está preocupado com a natureza competitiva, mas ainda ama esse tipo de trabalho, talvez veja opções que ampliam seu currículo. Foi minha experiência que, pelo menos no mundo incorporado, o WinCE parece não usar tanto o DirectX. (O WinCE tem uma API ligeiramente diferente do NT pode fazer parte desse motivo). O OpenGL está presente em todo o mundo incorporado e as pessoas estão fazendo mais coisas, como tablets, o entretenimento informativo para automóveis está quente no momento e, claro, os smartphones ...

Eric
fonte
+1 por mencionar o espaço incorporado. Eu não tinha pensado em entrar em gráficos para sistemas embarcados (exceto para plataformas móveis), mas depois de fazer uma pequena pesquisa, achei a escolha que vale a pena considerar. Eu tinha interesse em plataformas embarcadas há alguns anos atrás, mas outras coisas atrapalharam, então acabei abandonando-a bem cedo.
Adivasile 27/10
2

Eu diria que provavelmente é bom em seu currículo poder dizer que você trabalhou com ambos, independentemente do qual você se especializou.

Eu digo isso porque, como em qualquer coisa, trata-se mais de técnicas gerais do que de conhecimento de API / sintaxe além de um certo ponto. Você precisa ser capaz de fazer as coisas e conhecer o caminho a seguir, mas não precisa implementar peças enormes nas duas APIs: s. (Isso é O (n * m), que não escala ...). Conhecer um pouco as APIs e conhecer diferentes técnicas (por exemplo, O (n + m)) funciona e será útil.

Obviamente, você também receberá bônus por fazer algo "avançado" no DX, pois mostra que você tem um conhecimento mais profundo da API, mas, em qualquer caso, você precisa de técnicas avançadas para provar que sabe como as caixas devem ser conectadas (ignorando as palavras mágicas específicas que você tem a dizer para fazê-lo).

É o mesmo com qualquer API (3d ou não) ou qualquer linguagem de programação.

Macke
fonte
1

Eu descobri que o DirectX é mais difícil de aprender e, portanto, uma habilidade melhor. O Directx geralmente possui um melhor suporte dos fabricantes de placas, no entanto, a Microsoft não libera muitas atualizações para aproveitar esses avanços (e apenas uma subpopulação seleta de jogadores hardcore realmente usa essas placas). Quanto ao desenvolvimento de jogos, todas as principais plataformas de jogos usam seus próprios mecanismos gráficos ... xbox -> DirectX Box :) Conhecer conceitos 3D, malhas, iluminação, transformações etc. é uma habilidade que é a mesma para todos eles.

MartyTPS
fonte
Eu encontrei muito pouca diferença conceitual entre o DX9-ish e o openGl "moderno" (sem usar o glBegin). Eu apreciaria seus pensamentos sobre por que um dos dois é "mais fácil" ou "mais difícil" do que o outro.
drxzcl
1
Na verdade, acho que o OpenGL é mais fácil de entender o básico realmente fundamental, mas assim que você passa para VBOs e shaders, o D3D se torna muito mais fácil (a falta de extensões também o torna mais consistente em uma base de hardware mais ampla).
Maximus Minimus 28/10
Essa é a minha experiência também, daí a questão.
Drxzcl #
1

Se você conhece um, pode facilmente pegar o outro.

Se você conhece o OpenGL, pode programar facilmente para smartphones (android e iPhone), além de win / Linux / mac.

DirectX é apenas Win / Xbox. Portanto, a menos que você queira segmentar o Xbox, diria que fique com o OpenGL, pois ele pode segmentar mais plataformas.

user697111
fonte
-4

Eu prefiro o OPENGL. Considere, por exemplo, Android, o sistema operacional móvel usa OPENGL. Existem muitos mecanismos de jogos desenvolvidos com base na plataforma OPENGL.

user907629
fonte