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).
Respostas:
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
ID3D11DeviceContext
vá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
StructureByteStride
campo 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
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.
fonte
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.
fonte