APIs gráficas, como OpenGL e DirectX, atuam como uma ponte entre o software e o hardware gráfico usado para jogar. Essas APIs fornecem métodos padronizados para exibir gráficos 2D e 3D na tela. Eles se tornaram fundamentais para o desenvolvimento de jogos nas últimas duas décadas.
Motores como o Unity oferecem uma escolha entre as APIs gráficas que eles usam, mas como você deve escolher a opção certa para o seu jogo? Junte-se a nós enquanto comparamos o OpenGL com o DirectX para ter uma ideia de qual dessas ferramentas é melhor para você.
DirectX vs. OpenGL: Visão geral dos principais recursos
Em sua essência, tanto o DirectX quanto o OpenGL compartilham o mesmo pipeline gráfico, e o fazem há muitos anos. Ambas as APIs usam pontos chamados vértices para construir primitivos gráficos complexos. Cada vértice armazena suas próprias coordenadas e outras informações importantes. Mas a maneira como cada biblioteca usa vértices é diferente.
Eles podem executar funções semelhantes, mas você notará a diferença entre OpenGL e DirectX se trabalhar com eles.
DirectX vs. OpenGL: escopo da API
Antes de ir muito mais longe, é importante notar que, embora sejam APIs gráficas, OpenGL e DirectX têm escopos diferentes. OpenGL é uma API de gráficos puros, e isso significa que não lida com nada além de gráficos 2D e 3D. O DirectX, por outro lado, é uma coleção de gráficos, áudio, rede e outras APIs de hardware que funcionam em conjunto.
Em alguns casos, o OpenGL usará o DirectX para executar funções que não pode fazer sozinho. O restante deste artigo ignorará essa diferença entre as duas APIs, focando nos elementos gráficos de cada ferramenta.
OpenGL vs. DirectX: plataformas
O OpenGL é uma API gratuita gerenciada por uma empresa sem fins lucrativos chamada Khronos Group, enquanto o DirectX é feito pela Microsoft. O DirectX funciona principalmente no Windows e no Xbox, com outras plataformas, como o Linux, obtendo suporte lentamente. O OpenGL é multiplataforma, tornando-o utilizável para o desenvolvimento de jogos em uma variedade de sistemas operacionais e consoles de jogos.
DirectX vs. OpenGL: Recursos de Hardware
O DirectX deixa o gerenciamento de hardware para o desenvolvedor, dando a você a capacidade de alocar recursos com eficiência, conforme necessário. O OpenGL lida com o gerenciamento de hardware, mas isso pode trazer seus próprios benefícios, pois você não precisa se preocupar em gerenciar recursos por conta própria.
DirectX vs. OpenGL: Documentação
O acesso a documentação detalhada pode facilitar muito o desenvolvimento de jogos ao trabalhar com APIs. DirectX e OpenGL oferecem documentação atualizada regularmente e comunidades de desenvolvedores úteis. Ambas as APIs recebem grandes atualizações anuais para garantir que ofereçam os melhores recursos disponíveis.
Usando OpenGL vs. DirectX para desenvolvimento de jogos
Os desenvolvedores fizeram muitos jogos bonitos e bem otimizados no mercado moderno usando OpenGL e DirectX. Há várias coisas que você deve considerar ao escolher uma API de gráficos 2D/3D. Alguns desenvolvedores simplesmente confiam na ferramenta com a qual se sentem mais confortáveis.
OpenGL ou DirectX: Plataformas
Já abordamos as plataformas, mas essa é uma consideração crucial para os desenvolvedores. Se você quiser fazer jogos para Nintendo Switch, Playstation 4 ou Linux, precisará trabalhar com OpenGL ou outra API com suporte para eles. DirectX é feito para Windows e Xbox e tem compatibilidade limitada com outros sistemas.
OpenGL ou DirectX: Compatibilidade do mecanismo
A maioria dos desenvolvedores de jogos usa motores como Unity e Unreal para criar seus jogos, hoje em dia. Ambos os mecanismos suportam OpenGL e DirectX, assim como outros mecanismos de desenvolvimento de jogos multiplataforma.
OpenGL ou DirectX: Facilidade de uso
Alguns argumentariam que o OpenGL é mais fácil de trabalhar do que o DirectX. Juntamente com os recursos de hardware, o OpenGL lida apenas com gráficos, tornando-o mais simples por natureza. O fato de funcionar em mais plataformas também facilita o lançamento de jogos com esse requisito.
A facilidade de uso da API gráfica não é tão importante quanto costumava ser para os desenvolvedores de jogos. Com motores como o Unity interface com APIs gráficas nos bastidores, basta um clique de um botão para trocar a API que você está usando. A menos que você esteja criando um jogo do zero, é improvável que você perceba uma diferença na facilidade de uso de cada API.
OpenGL ou DirectX: recursos gráficos
A menos que você seja um caso marginal, é improvável que você veja uma grande diferença nos recursos disponíveis entre esses APIs. Ambos suportam os recursos da sua placa gráfica, e isso só mudará se as GPUs sofrerem mudanças drásticas no futuro.
OpenGL ou DirectX: desempenho do jogo
Há muito debate entre os desenvolvedores sobre o desempenho dessas APIs. É difícil imaginar que OpenGL ou DirectX tem diferenças de desempenho significativas, embora a afirmação de que o OpenGL é mais suave e mais eficiente seja comum conectados.
A única maneira de descobrir qual dessas APIs tem o melhor desempenho é por meio de testes. Graças à compatibilidade do Unity com ambas as APIs, podemos criar um projeto e testar um jogo de amostra com ambas as APIs para criar um benchmark de desempenho.
Esses testes foram realizados com gráficos 2D e 3D para garantir que seus diferentes pipelines não sejam um fator considerável. Cada teste é executado por 120 segundos de jogabilidade regular e os quadros por segundo estão sendo medidos para determinar o desempenho. Todos os testes foram realizados no mesmo PC.
Teste de desempenho 3D: Microjogo Unity Carting
O Unity Carting Microgame é um modelo gratuito que contém tudo o que você precisa para construir um jogo de corrida simples. Ele vem com tutoriais, mas estamos mais interessados no jogo em si. Construímos o Carting Microgame com OpenGL e DirectX para comparar seu desempenho e os resultados foram os seguintes:
Mais baixo | Altíssima | Média | |
---|---|---|---|
DirectX | 331 | 848 | 365.05 |
OpenGL | 247 | 819 | 283.7 |
O DirectX superou o OpenGL em nosso benchmark 3D, alcançando taxas de quadros impressionantes por toda parte. Os resultados do OpenGL ainda são mais do que jogáveis.
Teste de desempenho 2D: Microjogo de plataforma Unity
Assim como o Carting Microgame, o Unity Platformer Microgame é gratuito e repleto de ótimas ferramentas de aprendizado. Como esperado, o jogo 2D em nossos testes tem um desempenho melhor que o 3D, mas você pode avaliar os resultados por conta própria.
Mais baixo | Altíssima | Média | |
---|---|---|---|
DirectX | 599 | 850 | 767.367 |
OpenGL | 302 | 604 | 515.417 |
Como você pode ver nos resultados acima, o DirectX alcançou uma taxa de quadros média muito maior em nossos testes. Embora a diferença possa parecer dramática, ambos os resultados são muito jogáveis.
OpenGL ou DirectX 11: Conclusão do desempenho
Enquanto muitas pessoas dizem que o OpenGL tem um desempenho melhor do que o DirectX, a última API obteve melhores resultados em ambos os nossos benchmarks. Isso está longe de ser conclusivo, com muitos fatores desempenhando um papel em ditar o desempenho de um jogo, especialmente à medida que eles se tornam mais complexos.
DirectX ou OpenGL: qual você deve usar para desenvolvimento de jogos?
Escolher a API gráfica certa depende de vários fatores. DirectX é a API gráfica mais utilizada. Muitos desenvolvedores de jogos criam seus jogos para Windows e Xbox antes de portá-los para OpenGL para outras plataformas. Se você estiver publicando um jogo exclusivamente fora do Windows e do Xbox, poderá se beneficiar do uso do OpenGL desde o início.
O desempenho também é um fator a ser considerado, embora nossos testes mostrem que isso é bastante insignificante ao usar ferramentas de mecanismo como o Unity. Em essência, as diferenças entre essas duas APIs gráficas só importam para quem procura recursos de nicho específicos.