[Comparação] Vulkan vs Directx vs OpenGL

Qual é a diferença entre eles, qual é melhor?

Reposta mais clichê do mundo, mas nenhuma, são APIs diferentes com focos diferentes.

OpenGL é uma especificação de uma biblioteca gráfica livre e multiplataforma que pode ser implementada por qualquer fabricante e desenvolvedor desde que as guidelines sejam seguidas, as fabricantes implementam a versão que placa poderá suportar e developers implementam a conexão com o OS, no Linux ela é implementada pelo projeto Mesa, no ramo de jogos ela não é tão usada em triple-A’s, mas é relativamente bem usada em indies e é a API que a maioria começa a usar quando está estudando computação gráfica, por isso na academia ela ainda é bem usada.

DirectX é uma API desenvolvida pela M$ e, consequentemente, é mais otimizada no Windows do que o OpenGL, mas não é multiplataforma, pode fazer praticamente tudo que o GL faz, mas por ser exclusivo e mais otimizado pra Windows os devs acabam preferindo ela pra jogos, por isso até hj ela reina suprema em triple-A’s, a versão mais recente, DirectX 12, implementou um controle mais low-level, ± parecido com o Vulkan (mais a frente), mas ainda não é tão usado quanto o 11, e os poucos que usaram acabaram encontrando vários problemas de performance, se eles foram corrigidos eu não sei dizer.

Vulkan é uma API feita tendo hardware moderno em mente, ao longo dos anos hardware foi ficando mais poderosos e novas tecnologias foram sendo criadas e o GL e DX acompanharam essas tecnologias meio que remendando suas APIs, como consequencia disso elas ainda tem muitos aspectos que são desnecessárias hj em dia, mas que eram quando o hardware era limitado e o programador não poderia controlar tudo, e que acabam causando perda de performance, pensando nisso o Khronos Group (que tbm mantém o OpenGL) começou o Vulkan, uma API multiplataforma de alta performace que permite controle low-level total sobre o hardware, permitindo otimizações e um nível de controle que simplesmente não eram possíveis com GL e DX, mas por ser bem nova e muito mais difícil de se usar doq o DX ela ainda é pouco usada na indústria, mas muitas engines já estão ganhando suporte e algumas empresas, como a iD Software, passaram a usar exclusivamente ela. Tbm é implementada pelo projeto Mesa no Linux.

4 Curtidas

Não sei se um consegue ser superior do que o outro, mas vou falar as qualidades que posso informar da Vulkan, já que DX todo mundo conhece, ela é OpenSource, o que significa que toda uma comunidade pode trabalhar nela, alem de ter apoio financeiro de varias empresa que querem a API e precisa dela, o que significa que existe uma razão para ela ter sido criada, outra coisa é que ela é universal, então um estúdio pode focar apenas nela para portar em qualquer plataforma o que diminui o custo de produção.

Essa parte não tenho certeza, e se não me engano, ela também é uma API de baixo nível, o que significa que ela tem uma camada a menos para atuar aumentando o desempenho, o que o DX prometeu e parece não ter entregado.

1 Curtida

Mais qual seria o mais recomendável?

Pra o que?
Desenvolver? A que suprir o que tu quer fazer.
Só jogar? Não é tu que decide, são os devs, ce só aceita e usa o que tem :v

1 Curtida

O @Fenrir citou as diferenças de cada uma, também temos que dar um destaque nas variadas versões existentes do DirectX desde o 7 até o 12 (não conheço outro antes do DirectX 7 :sweat_smile:), o problema do DirectX é feito para rodar na plataforma da M$, minha aposta para jogos multiplataforma são o Vulkan (Jogos com redenrização pesada) e OpenGL (Jogos mais leves), ou DirectX para programação voltada á jogos somente para o e XBOX e o Windows

Mais se o Vulkan é mais recente, ta certo q ele é novo no mercado mais ele é melhor que outros API?

1 Curtida

Vulkan, para jogos, ainda tem algumas desvantagens em performance se comparado ao DirectX. Contudo, se seu objetivo é desenvolver um jogo graficamente pesado e multiplataforma, ele é a sua melhor opção (OpenGL é bem ruim pra isso).

1 Curtida

Nós não temos muitas APIS :disappointed_relieved:, Vulkan é o único que pode salvar os jogos para multiplataforma

1 Curtida

Só se for o DirectX11 porque o DirectX12 é terrivel

1 Curtida

Isso no caso se for Nvidia porque em placas de video AMD o vulkan se sai melhor que o DirectX 11

1 Curtida

Exemplo se um jogo fosse feito para Vulkan teria a mesma qualidade do Directx e do OpenGL?

Sim aqui um exemplo

Puxando um pouco mais ali de cima, Vulkan é a melhor opção atualmente, ela tem a mesma performance e o mesmo potencial gráfico do DiretcX11 + o low-level que o 12 prometeu mas não cumpriu, o problema são os programadores que ainda são inexperientes.
Em outras palavras, a API em si não tem nenhuma desvantagem em relação ao DX, mas os programadores não estão acostumados com ela e com todo o controle low-level e por isso acabam preferindo o DX ainda (e consequentemente programando melhor nele doq no Vulkan), a questão não é a API, mas quem a usa, Vulkan tem capacidade de criar gráficos muito melhores que GL e DirectX, mas tudo depende da equipe usar ela direito, sacou?

Edit: se tu quer um exemplo de equipe que usou direito, dá uma olhada na gameplay de DooM Eternal, a engine da iD usa Vulkan exclusivamente

3 Curtidas

Entendi, mais e so uma comparação mais daria para mudar um jogo ja existente para outra API

Dar dá, mas custa caro e leva muito tempo, então poucas empresas estão dispostas a fazer ports, a única que eu sei que fez foi a Valve que adicionou Vulkan em Dota2, mas pelo que eu vi ela é um exemplo de devs que ainda não sabem usar direito, pq a performance fica pior do que a do OpenGL em alguns casos kek

1 Curtida

Queria ver pro LOL como fica kkkkkkkkkkkkkkk

1 Curtida

E nem deve ser difícil para eles portarem para Linux já que portaram para o MacOS (que também usa o OpenGL nos jogos que nem no Linux), se eles quisessem liberava em snap e estava feito :slightly_frowning_face:

Qual a relação do drive mesa com o vulkan ou não tem relação?

Mesa é um driver de código aberto, pode ser analisado, modificado e corrigido, enquanto os drivers proprietários não podem ser analisados, modificados e corrigidos.

1 Curtida