Existe alguma vantagem em usar o DX10 / 11 para um jogo 2D?

10

Não estou totalmente familiarizado com o conjunto de recursos introduzidos pelo hardware da classe DX10 / 11. Estou vagamente familiarizado com os novos estágios adicionados ao pipeline de gráficos programáveis, como o sombreador de geometria, o sombreamento de computação e os novos estágios de mosaico. Eu não vejo como isso faz muita diferença para um jogo 2D.

Existe algum motivo convincente para mudar para o DX10 / 11 (ou os equivalentes do OpenGL) para um jogo 2D, ou seria mais sensato continuar com o DX9, considerando que uma parcela significativa do mercado ainda é executada em tecnologias mais antigas (por exemplo, o Fevereiro de 2012 As pesquisas do Steam listam cerca de 17% dos usuários que ainda usam o Windows XP)?

David Gouveia
fonte

Respostas:

5

Depende do que você está fazendo. Se você estiver usando o Direct3D, o único motivo para mudar é obter acesso aos recursos de hardware que você não pode obter de outra maneira.

Para um jogo em 2D, é teoricamente possível que certos recursos possam interessá-lo. Por exemplo, OpenCL ou DirectCompute. O Civilization V aproveita o DirectCompute para descomprimir as texturas. Isso reduz drasticamente o tempo de carregamento, porque ele só precisa carregar dados compactados. E os jogos 2D geralmente têm muitas imagens. Se o tempo de carregamento for um problema, isso pode ajudar.

O OpneCL deve estar disponível em todo o hardware GeForce 8xxx e acima. Na ATI, está disponível no HD 4xxx e em hardware melhor.

Eu diria que o maior recurso que você pode usar no DX11 é a capacidade de ler e gravar arbitrariamente imagens em shaders. Isso pode ser útil para certos efeitos especializados. Não consigo pensar em nada agora ... o que deve lhe dizer a probabilidade de isso ser importante.

Em geral, eu diria que se você estiver usando o D3D, provavelmente não ganhará muito. E se você ainda não entende quais são os novos recursos e deseja usá-los em seu jogo, quase certamente não ganhará muito. A maioria deles será mais complexa.

O OpenGL é diferente por um dos principais motivos. O OpenGL 2.1 (o equivalente mais ou menos ao D3D9) é uma porcaria como uma API. O OpenGL 3.3 (além de algumas extensões mais recentes executadas no hardware 3.3) melhora bastante a API. Localização explícita de atributos, separação de programas de sombreador, tudo no pacote de idiomas de sombreamento 420 e assim por diante.

Alguns deles funcionam bem em extensão contra 2.1. Alguns deles ... não. Ainda não tenho certeza se não há problema em usar locais de atributos explícitos com attributedeclarações (antes da insintaxe atual ). O pacote de idiomas de sombreamento 420 diz especificamente que ele não funciona com as versões GLSL anteriores à 1.30 (aka: OpenGL 3.0).

Isso não quer dizer que o GL 2.1 seja inutilizável. É certamente funcional e reparável, mas não agradável. Embora alguns drivers que você implementa não sejam reparáveis. O hardware DX9 da ATI não está mais sendo suportado, portanto esses drivers são realmente ruins. E a Intel nunca se importou com o OpenGL, então usar shaders em seu hardware é uma questão de sorte.

Mas, pessoalmente, se sua base de usuários pretendida permitir, eu passaria para o GL 3.3 se você estiver usando o OpenGL. Caso contrário, você apenas terá que lidar com os problemas do 2.1.

Nicol Bolas
fonte
5

Acho que você deve considerar algumas coisas:

  • Se você possui um mecanismo D3D9 bem testado, provavelmente não vale a pena migrar para o D3D11, se você não usar os novos recursos. Ao começar do zero, o D3D11 é muito mais tentador.

  • Em quanto tempo a data de lançamento do seu jogo será? O XP estará fora de suporte em pouco mais de dois anos, e se você observar os dados históricos de que a base de instalação do XP está caindo rapidamente (~ 1% / mês no Steam).

  • Considere qual a proporção de 17% dos usuários de XP que possui um PC que atenda às especificações mínimas para o seu jogo no D3D9. Quanto mais alto, mais vale a pena apoiá-los.

  • O DX10 é praticamente inútil para novos desenvolvimentos. O DX11 é executado nos mesmos sistemas operacionais e hardware (através dos níveis de recursos).

  • O DX11 suporta um renderizador de software (WARP) como um dispositivo de fallback, que pode ser rápido o suficiente para executar um jogo com baixos requisitos de GPU.

  • O DX9 nativo suporta mais recursos do que o D3D11 quando está usando qualquer um dos níveis de recurso do D3D9. Felizmente, o hardware DX9 em PCs com capacidade para DX10 é raro.

  • O hardware do DX10 / 11 tem recursos muito menos variados, portanto, se você faz com que o hardware do DX9 use o WARP, não precisa se preocupar com limitações estranhas com coisas como texturas sem poder de duas ou mapeamento de pixel texel estranho .

  • Se o seu jogo for intensivo em hardware, o DX11 tem alguns truques extras disponíveis para aumentar o desempenho. Por exemplo, multiencadear o código do sorteio.

Adão
fonte
Estou um pouco confuso sobre os níveis de recursos. Se eu desenvolver usando o DX11, mas segmentando um nível de recurso do DX9, entendo que ele será executado no hardware do DX9. Mas ainda será necessário o tempo de execução do DX11, ou seja, será executado no Windows XP?
David Gouveia
O DX11 não funciona no XP. O que os níveis de recursos fazem é permitir que você use a API do DX11 com hardware mais antigo. Consulte msdn.microsoft.com/en-us/library/ff476876%28v=vs.85%29.aspx para obter detalhes sobre o que cada nível de recurso permite que você faça.
Adam
1

Somente os sombreadores de geometria são um motivo para usar o D3D10 / 11, se você planeja ter um grande número de partículas ou sprites.

O DirectCompute também pode ser usado para obter alguns bons benefícios de velocidade.

Pessoalmente, simplesmente ter a API mais limpa e agradável do D3D10 / 11 é motivo suficiente para nunca mais tocar no D3D9 ou no OpenGL novamente para projetos modernos apenas para Windows. Realisticamente, porém, a necessidade de segmentar dispositivos móveis com GL | ES e a multidão ainda considerável de WinXP exige evitar o D3D10 / 11 e aderir ao D3D9 ou ao OpenGL.

Observe que seguir a rota do OpenGL permite obter shaders de geometria, OpenCL e outros recursos de hardware mais novos, mesmo no WinXP.

Sean Middleditch
fonte