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:
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.