Configuración del entorno de programación de Direct3D 12

Describe la instalación, las herramientas y las bibliotecas admitidas que componen un entorno de desarrollo productivo de Direct3D 12.

Entorno de desarrollo

Los encabezados y bibliotecas de Direct3D 12 forman parte del SDK de Windows 10. No hay ninguna descarga o instalación independiente necesaria para usar Direct3D 12.

Después de instalar el software del SDK de Windows 10 y Visual Studio, se completa la configuración del entorno de programación de Direct3D 12. Se recomienda Visual Studio 2019, ya que incluye herramientas de depuración de gráficos de D3D12, aunque las versiones anteriores de Visual Studio funcionan para el desarrollo de programas.

Para usar la API de Direct3D 12, incluya D3d12.h y cree un vínculo a D3d12.lib, o bien consulte los puntos de entrada directamente en D3d12.dll.

Están disponibles los siguientes encabezados y bibliotecas. La ubicación de las bibliotecas estáticas depende de la versión (de 32 o 64 bits) de Windows 10 que se ejecute en el equipo.

Nombre de archivo de encabezado o biblioteca Descripción Ubicación de instalación
D3d12.h Encabezado de API de Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib Biblioteca estática de código auxiliar de API de Direct3D 12 %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll Biblioteca dinámica de API de Direct3D 12 %WINDIR%\System32
D3d12SDKLayers.h Encabezado de depuración de Direct3D 12 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll Biblioteca dinámica de depuración de Direct3D 12 %WINDIR%\System32

Idiomas compatibles

C++ es el único lenguaje admitido para el desarrollo de Direct3D 12; no se admiten C# ni otros lenguajes .NET.

Estructuras auxiliares

Hay una serie de estructuras auxiliares que facilitan en particular la inicialización de una serie de estructuras de D3D12. Estas estructuras y algunas funciones de utilidad se encuentran en el encabezado D3dx12.h. Este encabezado es de código abierto y un desarrollador puede modificarlo según lo necesite: descárguelo de la biblioteca auxiliar de D3D12 y consulte Estructuras auxiliares y funciones de D3D12.

Biblioteca de administración de memoria

Hay disponible una biblioteca auxiliar de administración de memoria para descargar que puede integrar en la aplicación para que se asemeje al proceso de administración de memoria de D3D11. Como biblioteca de administración de estilos de D3D11, es más eficaz con las aplicaciones que siguen usando una estrategia de asignación de estilos de recursos confirmada. En concreto, la biblioteca debe verse como un punto de partida que le permitirá durante casi todo el proceso administrar la memoria de D3D11 de forma eficaz cuando se encuentra en situaciones con limitaciones de memoria (por ejemplo, tarjetas de memoria de gama baja, 4K, ajustes en ultra, etc.). Las API de D3D12 permiten establecer técnicas que permiten obtener una mayor eficacia de memoria para D3D11, aunque estas técnicas pueden ser difíciles y lentas de implementar.

Tenga en cuenta que esta biblioteca está en proceso de desarrollo y puede cambiar con el tiempo. Use los vínculos siguientes para acceder a la biblioteca y los ejemplos.

Herramientas y bibliotecas admitidas

Todas las bibliotecas siguientes se pueden usar con Direct3D 12.

Biblioteca Propósito Documentación
Kit de herramientas de DirectX para DirectX 12 Una colección significativa de clases auxiliares para escribir código C++ de Direct3D 12 para aplicaciones de Plataforma universal de Windows (UWP), aplicaciones de escritorio Win32 para Windows 10 y aplicaciones exclusivas de Xbox One. Wiki de DirectX12TK
DirectXTex Úsela para leer y escribir archivos DDS y realizar varias operaciones de procesamiento de contenido de texturas, como cambios de tamaño, conversión de formato, generación de mapas MIP, compresión de bloques para recursos de texturas en tiempo de ejecución de Direct3D y asignación de mapas de altura (height-maps) a mapas normales (normal-map). Wiki de DirectXTex
DirectXMesh Úsela para realizar varias operaciones de procesamiento de contenido de geometrías, como generar fotogramas normales y tangentes, cálculos de adyacencia de triángulos y optimización de caché de vértices. Wiki de DirectXMesh
DirectXMath Incluye un gran número de clases auxiliares y métodos para admitir vectores, escalares, matrices, cuaterniones y muchas otras operaciones matemáticas. Documentación de DirectXMath en MSDN
UVAtlas Utilícela para crear y empaquetar un atlas de texturas ISO Chart. Wiki de UVAtlas

 

Ejemplos

Para obtener una lista de ejemplos prácticos de D3D12 y cómo localizarlos y ejecutarlos, consulte Ejemplos de uso.

Para ver los tutoriales sobre cómo agregar código para activar funcionalidades concretas, consulte Tutoriales sobre código de D3D12.

Capa de depuración

La capa de depuración permite una amplia validación adicional de parámetros y de la uniformidad (como validar la vinculación del sombreador y los enlaces de recursos, validar la consistencia de los parámetros e informar de descripciones de errores).

Nota:

En Windows 10, para crear un dispositivo que admita la capa de depuración, active la función opcional "Herramientas de gráficos". En Windows 10 22H2, vaya al panel Configuración, en Sistema. En versiones anteriores de Windows 10, vaya al panel Configuración, en Aplicaciones > Aplicaciones y características. Vaya a Características opcionales > Agregar una característica y busque "Herramientas de gráficos".

El encabezado necesario para admitir la capa de depuración, D3D12SDKLayers.h, se incluye de forma predeterminada a través de d3d12.h.

Cuando la capa de depuración presenta pérdidas de memoria, esta genera una lista de punteros de interfaz de objeto junto con sus nombres descriptivos. El nombre descriptivo predeterminado es "<sin nombre>". Puede aplicar el nombre descriptivo mediante el método ID3D12Object::SetName . Normalmente, debe compilar estas llamadas fuera de la versión de producción.

Se recomienda usar la capa de depuración para depurar las aplicaciones y asegurarse de que están limpias de errores y advertencias. La capa de depuración le ayuda a escribir código de Direct3D 12. Además, la productividad puede aumentar al usar la capa de depuración porque así puede ver inmediatamente las causas de errores de renderización ocultos o incluso pantallas negras en su origen. La capa de depuración da avisos de muchos problemas. Por ejemplo:

  • Se olvidó aplicar una textura pero la lee en el sombreador de píxeles.
  • Hay profundidad final pero no hay ningún estado vinculado de depth-stencil.
  • Error en la creación de texturas con INVALIDARG.

Haga que el compilador defina D3DCOMPILE_DEBUG para indicar al compilador de HLSL que incluya información de la depuración en el blob del sombreador.

#define D3DCOMPILE_DEBUG 1

Para obtener más información sobre todas las interfaces y métodos de depuración, consulte la Referencia sobre la capa de depuración.

Para obtener información general sobre cómo usar la capa de depuración, consulte Cómo funciona la capa de depuración de D3D12.

Vídeos educativos

Hay varios vídeos relacionados con Direct3D 12 y Windows 10 en tutoriales de vídeo avanzados sobre DirectX, como vídeos sobre herramientas de depuración de gráficos e informes de errores de gráficos.

Descripción de Direct3D 12