Care este diferența dintre DirectX 11 și DirectX 12?

Qual é a diferença entre DirectX 11 e DirectX 12?

⌛ Reading Time: 4 minutes

DirectX é uma coleção de APIs, ou interfaces de programação de aplicativos, usadas por software para renderizar conteúdo multimídia e se comunicar com hardware gráfico. O principal componente API do DirectX, Direct3D, lida com as comunicações entre o software e o hardware gráfico. Como todo hardware é diferente, o uso de uma biblioteca padronizada de funções e chamadas para se comunicar com sua placa gráfica acelera o desenvolvimento do jogo. Isso é chamado de abstração de hardware e é o principal trabalho da API.

Pense nos carros: se você pode dirigir um carro, pode praticamente dirigir todos eles. Os pedais do acelerador e do freio estão no mesmo lugar, o volante gira na mesma direção e as portas se abrem para fora. Pode haver algumas pequenas diferenças em recursos não essenciais, como o rádio, mas no geral você sabe o que esperar. DirectX e Direct3D são assim, permitindo que os desenvolvedores façam interface com uma ampla gama de hardware usando as mesmas ferramentas. E, como a maioria dos desenvolvedores de jogos usa a biblioteca padrão do Direct3D, qualquer alteração na API pode afetar jogadores e programadores da mesma forma.

O que há de novo no DirectX 12?

Cada atualização importante para DirectX e Direct3D traz novos recursos e desenvolvimentos. O Direct3D 12, entretanto, trouxe algumas mudanças especialmente significativas. Na verdade, pode ser o início de uma nova área de APIs de gráficos de baixo nível que mudarão a forma como os jogos são desenvolvidos.

Abstração de hardware de nível inferior

O DirectX 12 agora permite que os desenvolvedores se aproximem do “metal” do hardware gráfico de seus usuários, fornecendo acesso a recursos antes indisponíveis para os desenvolvedores. Expor o hardware de nível inferior significa que desenvolvedores qualificados podem escrever um código mais eficiente que executa mais rapidamente. Especificamente, os desenvolvedores podem melhorar a otimização com desempenho multithread mais rápido e utilização mais eficiente da CPU. Isso poderia permitir otimizações de baixo nível semelhantes às que vemos em jogos de console, onde os jogos são ajustados para hardware de gama média extremamente específico, melhorando o desempenho que seria impossível sem essas otimizações hiperespecíficas.

Anteriormente, o DirectX 11 oferecia apenas um nível bastante alto de abstração de hardware, o que simplificava muito o processo de codificação. Na verdade, essa é a ideia por trás do que torna as APIs de hardware tão poderosas. Mas também significava que as oportunidades de ajuste fino do código em relação a recursos de hardware específicos eram menos frequentes. Blog de desenvolvedores da Microsoft fornece alguns grandes insights sobre como, exatamente, o DirectX 12 faz isso.

Melhor desempenho multicore

directx12-multicore-performance

Nos últimos anos, os jogadores aceitaram que CPUs multicore não são tão úteis para jogos. Em vez disso, os jogos dependem de um desempenho rápido de thread único. Isso acontece em parte porque o DirectX 11 não permite tanta paralelização. Vários threads de CPU podem enviar comandos de desenho simultaneamente. No entanto, eles ainda serão processados ​​em uma fila, um de cada vez. O DirectX 12 elimina essa limitação, permitindo que CPUs multicore enviem instruções simultâneas para a GPU, abrindo a porta para maior desempenho em processadores multicore.

Redução de despesas indiretas de chamadas

No DirectX 11, uma parte significativa do poder da CPU é gasta interpretando as instruções da API em vez de executar o código do jogo. O DirectX 12 reduz a sobrecarga da API, liberando recursos de computação para executar o código do jogo. Isso significa que os jogos com limitação de CPU podem ter maior desempenho, pois a potência da CPU é liberada para lidar com o código do jogo. A maioria dos jogos não tem limitação de CPU hoje, mas é possível que os jogos mais novos levem esse limite ainda mais.

Multiadapter explícito

directx12-discrete-multiadapter-comparision

DirectX 12 tem o poder de combinar várias GPUs (também conhecidos como “adaptadores de vídeo”) em uma única unidade lógica. Esse recurso, chamado de Multiadapter explícito, permite que várias GPUs sejam instruídas por software como uma única GPU. Por exemplo, com DirectX 12, a GPU integrada em sua máquina agora pode marcar a equipe com sua GPU discreta, emprestando seu próprio poder de processamento. Maior suporte API também pode significar maior confiabilidade e eficiência em configurações multi-GPU SLI / CrossFire. Nos testes da Microsoft, usando gráficos integrados em conjunto com gráficos discretos fornecidos um borda pequena, mas perceptível em benchmarks.

Quanto o DirectX 12 é importante para os jogadores?

Como muitos aprimoramentos incrementais, os jogadores não verão diferenças noturnas e diurnas entre o DirectX 11 e o DirectX 12. Os novos recursos não trazem novas opções de renderização que impressionem os usuários. Nem verá um salto de 100 FPS entre os dois padrões. Mas esses ganhos em eficiência acabarão por levar a um melhor desempenho em hardware menos potente, melhorando a potência do seu PC sem atualizar seu hardware.