http://go.microsoft.com/fwlink/?LinkID=615561
Direitos autorais (c) Microsoft Corporation.
28 de outubro de 2024
Este pacote contém o "DirectX Tool Kit", uma coleção de classes auxiliares para escrever código Direct3D 12 C++ para aplicativos da Plataforma Universal do Windows (UWP) para Windows 11 e Windows 10, títulos de jogos para Xbox Series X|S e Xbox One e Win32 aplicativos de desktop para Windows 11 e Windows 10.
Este código foi projetado para ser compilado com Visual Studio 2019 (16.11), Visual Studio 2022, clang para Windows v12 ou posterior ou MinGW 12.2. O uso do SDK de atualização do Windows 10 de maio de 2020 (19041) ou posterior é necessário para o Visual Studio.
Esses componentes foram projetados para funcionar sem exigir nenhum conteúdo do SDK DirectX herdado. Para obter detalhes, consulte Onde está o SDK do DirectX?.
Inc
Arquivos de cabeçalho público (no namespace DirectX C++):
Src
Audio
build
MakeSpriteFont e XWBTool podem ser encontrados no DirectX Tool Kit para DirectX 11
A documentação está disponível no wiki do GitHub.
Todo o conteúdo e código-fonte deste pacote estão sujeitos aos termos da Licença MIT.
Para a versão mais recente do DirectXTK12, relatórios de bugs, etc., visite o site do projeto no GitHub.
Não há suporte para sombreadores de efeito Directed Graph Shader Language (DGSL) do Visual Studio (ou seja, DGSLEffect ). Os arquivos CMO são carregados usando materiais BasicEffect ou SkinnedEffect.
VertexTypes não inclui VertexPositionNormalTangentColorTexture ou VertexPositionNormalTangentColorTextureSkinning que foram planejados para uso com o pipeline DGSL.
O DirectX Tool Kit para DirectX 11 oferece suporte ao nível de recurso 9.x, enquanto o DirectX 12 requer o nível de recurso Direct3D 11.0. Não há drivers DirectX 12 esperados para dispositivos de nível de recurso inferior.
A biblioteca assume que está sendo construída para Windows 10 (também conhecido como _WIN32_WINNT=0x0A00
), portanto, usa XAudio 2.9 e WIC2, bem como DirectX 12.
O kit de ferramentas DirectX para áudio, GamePad, teclado, mouse e SimpleMath é idêntico à versão DirectX 11.
PARA CONSELHOS DE SEGURANÇA, consulte GitHub.
Para um histórico completo de alterações, consulte CHANGELOG.md.
Na versão de junho de 2024, o parâmetro padrão initialState
para a função CreateUploadBuffer
em BufferHelpers foi removido. Pela camada de validação do DirectX 12, o único estado inicial válido para um buffer de upload é D3D12_RESOURCE_STATE_GENERIC_READ
.
A partir da versão de fevereiro de 2023, a implementação da classe Mouse do movimento relativo do mouse foi atualizada para acumular alterações entre chamadas para GetState
. Por padrão, cada vez que você chama GetState
os deltas são redefinidos, o que funciona para cenários em que você usa movimento relativo, mas chama o método apenas uma vez por quadro. Se você chamá-lo mais de uma vez por quadro, adicione uma chamada explícita a EndOfInputFrame
para usar um modelo de redefinição explícito.
A partir da versão de setembro de 2022, a biblioteca usa namespaces embutidos C++ 11 para tipos diferentes que têm os mesmos nomes na versão DirectX 11 e DirectX 12 do DirectX Tool Kit . Isso fornece um nome exclusivo do link, como DirectX::DX12::SpriteBatch
, que aparecerá nas mensagens de saída do vinculador. Na maioria dos casos de uso, entretanto, não há necessidade de adicionar resolução explícita de namespace DX12
no código do cliente.
A partir da versão de junho de 2021, esta biblioteca cria shaders HLSL com Shader Model 6 via DXC. Veja esta página wiki para mais informações. Os projetos Microsoft GDK sempre usaram Shader Model 6.
A partir da versão de junho de 2020, esta biblioteca faz uso de sinalizadores de bitmask enum digitados de acordo com a recomendação da seção 17.5.2.1.3 Bitmask types do padrão C++ . Isso pode ter impactos de alterações significativas no código do cliente:
Você não pode passar o literal 0
como valor do sinalizador. Em vez disso, você deve usar o valor enum padrão apropriado: AudioEngine_Default
, SoundEffectInstance_Default
, ModelLoader_Clockwise
, DDS_LOADER_DEFAULT
ou WIC_LOADER_DEFAULT
.
Use o tipo enum em vez de DWORD
se estiver criando valores de sinalizadores localmente com operações de máscara de bits. Por exemplo, WIC_LOADER_FLAGS flags = WIC_LOADER_DEFAULT; if (...) flags |= WIC_LOADER_FORCE_SRGB;
Os projetos UWP e o projeto de desktop clássico Win10 incluem configurações para a plataforma ARM64. Construí-los requer a instalação do conjunto de ferramentas ARM64.
Para desenvolvimento ARM64/AArch64, o compilador VS 2022 é fortemente recomendado em vez do conjunto de ferramentas VS 2019. O SDK do Windows (26100 ou posterior) não é compatível com o VS 2019 para Win32 em desenvolvimento ARM64. Observe que a plataforma ARM32/AArch32 está obsoleta .
Ao usar clang/LLVM para a plataforma ARM64/AArch64, o SDK do Windows 11 (22000) ou posterior é necessário.
O script CompileShaders.cmd
deve ter finais de linha no estilo Windows (CRLF). Se for alterado para finais de linha no estilo Linux (LF), poderá falhar ao construir todos os shaders necessários.
Em caso de dúvidas, considere usar Stack Overflow com a tag directxtk ou o DirectX Discord Server no canal dx12-developers .
Para relatórios de bugs e solicitações de recursos, use os problemas do GitHub para este projeto.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA), declarando que você tem o direito de nos conceder, e realmente nos concede, os direitos de uso de sua contribuição. Para obter detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação pull, um bot CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, verificação de status, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Os testes para novos recursos também devem ser enviados como PR para o repositório do Test Suite.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
Este projeto pode conter marcas registradas ou logotipos de projetos, produtos ou serviços. O uso autorizado de marcas registradas ou logotipos da Microsoft está sujeito e deve seguir as Diretrizes de Marcas Registradas e Marcas da Microsoft. O uso de marcas registradas ou logotipos da Microsoft em versões modificadas deste projeto não deve causar confusão nem implicar patrocínio da Microsoft. Qualquer uso de marcas registradas ou logotipos de terceiros está sujeito às políticas desses terceiros.
O DirectX Tool Kit para DirectX 11 é trabalho de Shawn Hargreaves e Chuck Walbourn, com contribuições de Aaron Rodriguez Hernandez e Dani Roman.
O DirectX Tool Kit para DirectX 12 é o trabalho de Pete Lewis, Justin Saunders e Chuck Walbourn baseado fortemente no DirectX Tool Kit para DirectX 11.
Agradecimentos a Shanon Drone pelo formato de arquivo SDKMESH.
Agradecimentos a Adrian Tsai pela implementação da esfera geodésica.
Obrigado a Garrett Serack por sua ajuda na criação dos pacotes NuGet para DirectX Tool Kit.
Obrigado a Pete Lewis e Justin Saunders pela implementação de shaders mapeados normais e PBR.
Obrigado a Travis Johnson pelo suporte mGPU.
Obrigado a Roberto Sonnino pela ajuda com o formato CMO e a animação do VS Starter Kit.
Obrigado a Richie Meyer por sua contribuição de memória personalizada do Xbox PIX e suporte a eventos de rastreamento de alocação de tipo.
Obrigado a Andrew Farrier e Scott Matloff pela ajuda contínua com revisões de código.