http://go.microsoft.com/fwlink/?LinkId=248926
Direitos autorais (c) Microsoft Corporation.
28 de outubro de 2024
Este pacote contém DirectXTex, uma biblioteca de código-fonte compartilhada para leitura e gravação de arquivos .DDS
e execução de várias operações de processamento de conteúdo de textura, incluindo redimensionamento, conversão de formato, geração de mapa mip, compactação de bloco para recursos de textura de tempo de execução Direct3D e mapa de altura para normal- conversão de mapa. Esta biblioteca usa APIs do Windows Image Component (WIC). Ele também inclui leitores e gravadores .TGA
e .HDR
uma vez que esses formatos de arquivo de imagem são comumente usados para pipelines de processamento de conteúdo de textura, mas atualmente não são suportados por um codec WIC integrado.
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. Ele também pode ser construído para o subsistema Windows para Linux usando GCC 11 ou posterior.
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?.
DirectXTex
A maioria dos arquivos de cabeçalho aqui destinam-se apenas à implementação interna da biblioteca (
BC.h
,BCDirectCompute.h
,DDS.h
,DirectXTexP.h
, etc.). SomenteDirectXTex.h
eDirectXTex.inl
são considerados o cabeçalho 'público' da biblioteca.
Auxiliary
Common
Texconv
Este exemplo de DirectXTex é uma implementação do utilitário de textura de linha de comando texconv do DirectX SDK utilizando DirectXTex em vez de D3DX.
Ele suporta os mesmos argumentos do utilitário legado DirectX SDK da Texture Conversion Tool Extended ( texconvex.exe
). As principais diferenças são que os argumentos -10
e -11
não são aplicáveis e os nomes dos filtros ( POINT
, LINEAR
, CUBIC
, FANT
ou BOX
, TRIANGLE
, *_DITHER
, *_DITHER_DIFFUSION
). Isso também inclui suporte para o formato bitmap JPEG XR (HD Photo).
Texassemble
Texdiag
DDSView
DDSTextureLoader
ScreenGrab
WICTextureLoader
DDSTextureLoader11, ScreenGrab11 e WICTextureLoader11 são versões 'independentes' dos mesmos módulos fornecidos no DirectX Tool Kit para DX11
DDSTextureLoader12, ScreenGrab12 e WICTextureLoader12 são versões 'independentes' dos mesmos módulos fornecidos no DirectX Tool Kit para DX12.
build
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 obter a versão mais recente do DirectXTex, relatórios de bugs, etc., visite o site do projeto no GitHub.
PARA CONSELHOS DE SEGURANÇA, consulte GitHub.
Para um histórico completo de alterações, consulte CHANGELOG.md.
A partir da versão de julho de 2022, o parâmetro bool forceSRGB
para as funções CreateTextureEx e CreateShaderResourceViewEx agora é um parâmetro de sinalizador enum bitmask digitado CREATETEX_FLAGS
. Isso pode ter um impacto de alteração significativa no código do cliente. Substitua true
por CREATETEX_FORCE_SRGB
e false
por CREATETEX_DEFAULT
.
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 é consistente com o uso da macro DEFINE_ENUM_FLAG_OPERATORS
pelo Direct3D 12. Isso pode ter impactos de alterações significativas no código do cliente:
Você não pode passar o literal 0
como valor do seu sinalizador. Em vez disso, você deve usar o valor de enum padrão apropriado: CP_FLAGS_NONE
, DDS_FLAGS_NONE
, WIC_FLAGS_NONE
, TEX_FR_ROTATE0
, TEX_FILTER_DEFAULT
, TEX_FILTER_DEFAULT
, TEX_FILTER_DEFAULT
, CNMAP_DEFAULT
ou CNMAP_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, DDS_FLAGS flags = DDS_FLAGS_NONE; if (...) flags |= DDS_FLAGS_EXPAND_LUMINANCE;
Nos casos em que alguns sinalizadores se sobrepõem, você pode usar o |
para combinar os tipos relevantes: os modos de filtro TEX_FILTER_FLAGS
combinam com WIC_FLAGS
, os sinalizadores TEX_FILTER_FLAGS
sRGB combinam com TEX_PMALPHA_FLAGS
ou TEX_COMPRESS_FLAGS
. Nenhum outro operador bit a bit está definido. Por exemplo, WIC_FLAGS wicFlags = WIC_FLAGS_NONE | TEX_FILTER_CUBIC;
WICTextureLoader não pode carregar arquivos .TGA
ou .HDR
a menos que o sistema tenha um codec WIC de terceiros instalado. Você deve usar a biblioteca DirectXTex para suporte ao formato de arquivo TGA/HDR sem depender de um codec WIC complementar.
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.
A partir da versão de outubro de 2024, as ferramentas de linha de comando também oferecem suporte a opções longas no estilo GNU usando --
. Todas as opções existentes continuam funcionando, mas algumas das opções -
agora estão obsoletas de acordo com esta tabela:
montagem texas | texconv | texdiag | |||
---|---|---|---|---|---|
-mapa de tom | --tonemap | -badtails | --bad-tails | -badtails | --bad-tails |
-bgcolor | --gif-bg-cor | -fixbc4x4 | --fix-bc-4x4 | -ignoremips | --ignore-mips |
-swizzle | --swizzle | -ignoremips | --ignore-mips | -permissivo | --permissivo |
-stripmips | --strip-mips | -inversão | --inverter-y | -targetx | --target-x |
-keepcoverage | --keep-coverage | ||||
-permissivo | --permissivo | ||||
-reconstruir | --reconstruir-z | ||||
-rotatecolor | --rotate-cor | ||||
-singleproc | --single-proc | ||||
-swizzle | --swizzle | ||||
-tgazeroalfa | --tga-zero-alfa | ||||
-tempo | --tempo | ||||
-mapa de tom | --tonemap | ||||
-sem wiloss | --wic-sem perdas | ||||
-wicmulti | --wic-multiframe | ||||
-x2bias | --x2-viés |
Em caso de dúvidas, considere usar Stack Overflow com a tag directxtk ou o DirectX Discord Server no canal dx12-developers ou dx9-dx11-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.
A biblioteca DirectXTex é obra de Chuck Walbourn, com contribuições de Matt Lee, Xin Huang, Craig Peeper e vários outros engenheiros da Microsoft que desenvolveram a biblioteca de utilitários D3DX ao longo dos anos.
Obrigado a Paul Penson por sua ajuda na implementação de MemoryStreamOnBlob
.
Obrigado a Andrew Farrier e Scott Matloff pela ajuda contínua com revisões de código.
Obrigado a Park DongHa por sua contribuição nas funções auxiliares JPEG/PNG.