http://go.microsoft.com/fwlink/?LinkID=615561
Copyright (c) Microsoft Corporation.
28 de octubre de 2024
Este paquete contiene el "Kit de herramientas DirectX", una colección de clases auxiliares para escribir código Direct3D 12 C++ para aplicaciones de la Plataforma universal de Windows (UWP) para Windows 11 y Windows 10, títulos de juegos para Xbox Series X|S y Xbox One, y Win32. Aplicaciones de escritorio para Windows 11 y Windows 10.
Este código está diseñado para compilarse con Visual Studio 2019 (16.11), Visual Studio 2022, clang para Windows v12 o posterior, o MinGW 12.2. Se requiere el uso del SDK de actualización de Windows 10 de mayo de 2020 (19041) o posterior para Visual Studio.
Estos componentes están diseñados para funcionar sin requerir ningún contenido del SDK de DirectX heredado. Para obtener más información, consulte ¿Dónde está el SDK de DirectX?
Inc
Archivos de encabezado públicos (en el espacio de nombres de DirectX C++):
Src
Audio
build
MakeSpriteFont y XWBTool se pueden encontrar en el kit de herramientas DirectX para DirectX 11
La documentación está disponible en la wiki de GitHub.
Todo el contenido y el código fuente de este paquete están sujetos a los términos de la licencia MIT.
Para obtener la última versión de DirectXTK12, informes de errores, etc., visite el sitio del proyecto en GitHub.
No hay soporte para sombreadores de efectos de Visual Studio Directed Graph Shader Language (DGSL) (es decir, DGSLEffect ). Los archivos CMO se cargan utilizando materiales BasicEffect o SkinnedEffect.
VertexTypes no incluye VertexPositionNormalTangentColorTexture o VertexPositionNormalTangentColorTextureSkinning que estaban destinados a usarse con la canalización DGSL.
DirectX Tool Kit para DirectX 11 admite el nivel de función 9.x, mientras que DirectX 12 requiere el nivel de función Direct3D 11.0. No se esperan controladores DirectX 12 para ningún dispositivo de nivel de funciones inferior.
La biblioteca supone que está compilada para Windows 10 (también conocida como _WIN32_WINNT=0x0A00
), por lo que utiliza XAudio 2.9 y WIC2, así como DirectX 12.
El kit de herramientas DirectX para audio, GamePad, teclado, mouse y SimpleMath son idénticos a la versión DirectX 11.
PARA OBTENER AVISOS DE SEGURIDAD, consulte GitHub.
Para obtener un historial de cambios completo, consulte CHANGELOG.md.
En la versión de junio de 2024, se eliminó el parámetro predeterminado initialState
para la función CreateUploadBuffer
en BufferHelpers . Según la capa de validación de DirectX 12, el único estado inicial válido para un búfer de carga es D3D12_RESOURCE_STATE_GENERIC_READ
.
A partir de la versión de febrero de 2023, la implementación de la clase Mouse del movimiento relativo del mouse se actualizó para acumular cambios entre llamadas a GetState
. De forma predeterminada, cada vez que llama GetState
los deltas se restablecen, lo que funciona para escenarios en los que usa movimiento relativo pero solo llama al método una vez por cuadro. Si lo llama más de una vez por cuadro, agregue una llamada explícita a EndOfInputFrame
para usar un modelo de reinicio explícito.
A partir de la versión de septiembre de 2022, la biblioteca utiliza espacios de nombres en línea de C++11 para diferentes tipos que tienen los mismos nombres en las versiones DirectX 11 y DirectX 12 del DirectX Tool Kit . Esto proporciona un nombre exclusivo de enlace, como DirectX::DX12::SpriteBatch
, que aparecerá en los mensajes de salida del vinculador. Sin embargo, en la mayoría de los casos de uso, no es necesario agregar una resolución de espacio de nombres DX12
explícita en el código del cliente.
A partir de la versión de junio de 2021, esta biblioteca crea sombreadores HLSL con Shader Model 6 a través de DXC. Consulte esta página wiki para obtener más información. Los proyectos de Microsoft GDK siempre han utilizado Shader Model 6.
A partir de la versión de junio de 2020, esta biblioteca utiliza indicadores de máscara de bits de enumeración escrita según la recomendación de la sección 17.5.2.1.3 del estándar C++ Tipos de máscara de bits. Esto puede tener impactos de cambios importantes en el código del cliente:
No puede pasar el literal 0
como valor de sus banderas. En su lugar, debe utilizar el valor de enumeración predeterminado apropiado: AudioEngine_Default
, SoundEffectInstance_Default
, ModelLoader_Clockwise
, DDS_LOADER_DEFAULT
o WIC_LOADER_DEFAULT
.
Utilice el tipo de enumeración en lugar de DWORD
si crea valores de indicadores localmente con operaciones de máscara de bits. Por ejemplo, WIC_LOADER_FLAGS flags = WIC_LOADER_DEFAULT; if (...) flags |= WIC_LOADER_FORCE_SRGB;
Los proyectos UWP y el proyecto de escritorio clásico Win10 incluyen configuraciones para la plataforma ARM64. Para crearlos es necesario instalar el conjunto de herramientas ARM64.
Para el desarrollo de ARM64/AArch64, se recomienda encarecidamente el compilador VS 2022 en lugar del conjunto de herramientas VS 2019. El SDK de Windows (26100 o posterior) no es compatible con VS 2019 para Win32 en desarrollo ARM64. Tenga en cuenta que la plataforma ARM32/AArch32 está en desuso .
Cuando se utiliza clang/LLVM para la plataforma ARM64/AArch64, se requiere el SDK de Windows 11 (22000) o posterior.
El script CompileShaders.cmd
debe tener finales de línea al estilo de Windows (CRLF). Si se cambia a finales de línea estilo Linux (LF), es posible que no pueda crear todos los sombreadores necesarios.
Si tiene preguntas, considere usar Stack Overflow con la etiqueta directxtk o DirectX Discord Server en el canal dx12-developers .
Para informes de errores y solicitudes de funciones, utilice los problemas de GitHub para este proyecto.
Este proyecto agradece contribuciones y sugerencias. La mayoría de las contribuciones requieren que usted acepte un Acuerdo de licencia de colaborador (CLA) que declara que tiene derecho a otorgarnos, y de hecho lo hace, los derechos para usar su contribución. Para obtener más detalles, visite https://cla.opensource.microsoft.com.
Cuando envía una solicitud de extracción, un bot CLA determinará automáticamente si necesita proporcionar un CLA y decorar el PR de manera adecuada (por ejemplo, verificación de estado, comentario). Simplemente siga las instrucciones proporcionadas por el bot. Solo necesitarás hacer esto una vez en todos los repositorios que utilicen nuestro CLA.
Las pruebas de nuevas funciones también deben enviarse como PR al repositorio de Test Suite.
Este proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para obtener más información, consulte las preguntas frecuentes sobre el Código de conducta o comuníquese con [email protected] si tiene preguntas o comentarios adicionales.
Este proyecto puede contener marcas comerciales o logotipos de proyectos, productos o servicios. El uso autorizado de las marcas comerciales o logotipos de Microsoft está sujeto y debe seguir las Pautas de marcas y marcas comerciales de Microsoft. El uso de marcas comerciales o logotipos de Microsoft en versiones modificadas de este proyecto no debe causar confusión ni implicar patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de dichos terceros.
El kit de herramientas DirectX para DirectX 11 es obra de Shawn Hargreaves y Chuck Walbourn, con contribuciones de Aaron Rodríguez Hernández y Dani Román.
El kit de herramientas DirectX para DirectX 12 es el trabajo de Pete Lewis, Justin Saunders y Chuck Walbourn y se basa en gran medida en el kit de herramientas DirectX para DirectX 11.
Gracias a Shanon Drone por el formato de archivo SDKMESH.
Gracias a Adrian Tsai por la implementación de la esfera geodésica.
Gracias a Garrett Serack por su ayuda en la creación de paquetes NuGet para DirectX Tool Kit.
Gracias a Pete Lewis y Justin Saunders por la implementación de sombreadores PBR y de mapeo normal.
Gracias a Travis Johnson por el soporte de mGPU.
Gracias a Roberto Sonnino por su ayuda con el formato CMO y la animación del VS Starter Kit.
Gracias a Richie Meyer por su contribución a la memoria personalizada de Xbox PIX y al soporte de eventos de seguimiento de asignación de tipos.
Gracias a Andrew Farrier y Scott Matloff por su ayuda continua con las revisiones de código.