Passando do DirectX 10 para o DirectX 11

10

Eu fiz um número razoável de pequenos projetos de hobby usando o DirectX 9, mas é hora de mudar para o DirectX 11 agora.

Eu tenho Frank Luna, um livro sobre programação 3D usando o DirectX 10, mas nada no DirectX 11. Eu acredito que eles são bem parecidos, mas queria saber se alguém poderia enumerar as principais diferenças em um nível de código que eu precisarei estar ciente ( ou aponte para uma fonte existente).

JohnB
fonte
Relacionados gamedev.stackexchange.com/questions/2362/...
A Comunista Duck
Ouvi dizer que o DX10 era realmente diferente e não era compatível com o DX9, enquanto o DX11 era compatível com o DX9.
Jokoon 29/03
O DX10 é bem diferente do DX9, mas o DX11 é bastante semelhante ao DX10, eu só queria saber quais eram as diferenças. Estranhamente, porém, DX11 irá trabalhar com hardware DX9 mas DX10 não;)
JohnB

Respostas:

15

A documentação do SDK possui uma seção sobre migração para 11, que abrange os 9 e 10. Há também a página de recursos do D3D11 .

Uma das maiores mudanças em termos de formato da API entre 10 e 11 é que o 11 move ID3D11DeviceContextvários métodos do próprio dispositivo para uma nova interface chamada contexto do dispositivo ( especificamente), a fim de suportar os novos recursos de multiencadeamento.

Uma vez que você está ciente da mudança, é bem fácil se adaptar: onde você chamaria "10" em 10 someDevice->Draw()", você obterá o contexto imediato para o dispositivo e ligará " immediateContext->Draw(). "

A outra grande mudança é que a API de efeitos é retirada do núcleo e feita uma distribuição de origem independente, que você deve compilar e vincular. Você também pode observar algumas interfaces e funções do D3DX que foram preteridas ou removidas.

Além disso, existem alguns parâmetros novos para algumas funções e alguns campos extras nas estruturas, etc. Por exemplo, o objeto de descrição do buffer em 11 possui um StructureByteStridecampo extra que não está em 10 e a criação do dispositivo envolve a transmissão de informações no nível do recurso . Além disso, existem as mudanças óbvias e mencionadas nos nomes de interface (10s substituídos por 11s).


fonte
Obrigado, exatamente o que eu precisava. Procurei um guia oficial sobre o que havia mudado, mas de alguma forma não consegui encontrá-lo. Obrigado por esta resposta e as outras pessoas que tomaram o tempo para ajudar com boas respostas também :)
JohnB
É engraçado como alguém esquece essas coisas rapidamente. Eu odiava especialmente a compilação de efeitos e levei alguns dias para fazê-la funcionar. Mas eu não incluí-lo em minha resposta ...
Notabene
Eu ia postar isso como uma pergunta, mas percebi que sua resposta já cobre a maioria das minhas preocupações, embora eu queira alguma confirmação. Para alguém que trabalhou apenas com o DX9, mas está buscando atualizar seus conhecimentos, escolher um livro do DX11 não apenas me ensinará sobre o DX11 (obviamente), mas também fornecerá conhecimento suficiente para trabalhar com o DX10, se necessário?
David Gouveia
Sim, praticamente.
1

Eu acho que a principal diferença é que, no DX11, o DXFont se foi, fora isso, é como o notabene disse. Você deve ficar bem com esse livro do DX10. Eu usei esse quando mudei para o DX11 e não tive problemas. Você precisará ir e olhar o msdn de tempos em tempos, porém, existem algumas pequenas diferenças na API em alguns lugares do IIRC.

dotminic
fonte
1

Não haverá necessidade de mudar. O Directx11 adiciona apenas novos recursos. Você apenas mudará os números de ID3D10 para ID3D11 etc.


O DirectX11 adiciona (se não estiver falando sobre o exagero de HW) o Direct Compute: API para a GPGPU, com excelente conexão com a linha de pipe dos gráficos (não posso dizer isso sobre CUDA ou openCL). E possibilidade de várias texturas RW e buffers em um pixel shader, o que abre muitas novas possibilidades.

Notabene
fonte