Jogos 2D rodando no DirectX 3D

Se eu tenho um jogo 2D, será que ele pode usar o DirectX 3D?

A resposta é SIM, claro! Em geral, um jogos é codificado usando um framework que encapsula as chamadas ao DirectX, não sendo necessário codificar diretamente com a API. Mas apesar do nome, o DirectX 3D pode ser usado para qualquer aplicativo 2D com o intuito de transferir parte da carga atribuída à CPU para a GPU – esse é o chamado offloading de carga.

  • Os elementos de um jogo 2D como o background e os sprites podem ser tratados como textura 3D
  • Transformações como translação, rotação e escala podem ser feitas na GPU
  • A renderização da cena pode ser feita diretamente na tela pela GPU

Quando se programa com a API do DirectX 3D, o sistema operacional emite comandos para serem processados pela GPU. Dessa forma, conseguimos liberar a CPU para executar as tarefas usuais de sistema, enquanto que a GPU se dedica somente ao processamento gráfico.

Outra possibilidade para offloading de carga seria utilizar o processamento paralelo através do C++ AMP.

C++ AMP (C++ Accelerated Massive Parallelism)
https://msdn.microsoft.com/en-us/library/hh265137.aspx

 

Por que a GPU?

A importância de usar a GPU para renderizar imagens ao invés da CPU pode ser explicada por meio da figura abaixo:

image

O número de cores em uma GPU é muito maior do que em uma CPU e nesses últimos anos vem crescendo. Resta ainda alguma dúvida sobre sua relevância?!

Portanto, jogos 2D devem sempre que possível tirar proveito da tecnologia do DirectX para melhorar seu desempenho.