Capas de software

El entorno de ejecución de Direct3D 11 se construye con capas, empezando por la funcionalidad básica en el núcleo y creando funcionalidades opcionales y de asistencia para desarrolladores en capas externas. En esta sección se describe la funcionalidad de cada capa.

Como regla general, las capas agregan funcionalidad, pero no modifican el comportamiento existente. Por ejemplo, las funciones principales tendrán los mismos valores devueltos independientemente de la capa de depuración que se crea una instancia, aunque se puede proporcionar una salida de depuración adicional si se crea una instancia de la capa de depuración.

Para crear capas cuando se crea un dispositivo, llame a D3D11CreateDevice o D3D11CreateDeviceAndSwapChain y proporcione uno o varios valores D3D11_CREATE_DEVICE_FLAG .

Direct3D 11 proporciona las siguientes capas en tiempo de ejecución:

Capa principal

La capa de núcleo existe de forma predeterminada; proporcionar una asignación muy fina entre la API y el controlador del dispositivo, lo que minimiza la sobrecarga de las llamadas de alta frecuencia. Dado que la capa principal es esencial para el rendimiento, solo realiza una validación crítica. Las capas restantes son opcionales.

Capa de depuración

La capa de depuración proporciona una amplia validación adicional de parámetros y coherencia (como validar la vinculación del sombreador y el enlace de recursos, validar la coherencia de los parámetros y notificar descripciones de errores).

Para crear un dispositivo que admita la capa de depuración, debe instalar el SDK de DirectX (para obtener D3D11SDKLayers.dll) y, a continuación, especificar la marca D3D11_CREATE_DEVICE_DEBUG al llamar a la función D3D11CreateDevice o la función D3D11CreateDeviceAndSwapChain . Si ejecuta la aplicación con la capa de depuración habilitada, la aplicación será considerablemente más lenta. Sin embargo, para asegurarse de que la aplicación está limpia de errores y advertencias antes de enviarla, use la capa de depuración. Para obtener más información, consulta Uso de la capa de depuración para depurar aplicaciones.

Nota

Para Windows 7 con Actualización de plataforma para Windows 7 (KB2670838) o Windows 8.x, para crear un dispositivo que admita la capa de depuración, instale el Kit de desarrollo de software (SDK) de Windows para Windows 8.x para obtener D3D11_1SDKLayers.dll.

Nota

Para Windows 10, para crear un dispositivo que admita la capa de depuración, habilite la característica opcional "Herramientas de gráficos". Vaya al panel Configuración, en Características del sistema, Aplicaciones & , Administrar características opcionales, Agregar una característica y, a continuación, busque "Herramientas de gráficos".

Nota

Para obtener información sobre cómo depurar aplicaciones de DirectX de forma remota, consulta Depuración remota de aplicaciones DirectX.

 

Como alternativa, puede habilitar o deshabilitar la marca de depuración mediante el Panel de control de DirectX incluido como parte del SDK de DirectX.

Cuando la capa de depuración muestra pérdidas de memoria, genera una lista de punteros de interfaz de objeto junto con sus nombres descriptivos. El nombre descriptivo predeterminado es "<sin nombre>". Puede establecer el nombre descriptivo mediante el método ID3D11DeviceChild::SetPrivateData y el GUID de WKPDID_D3DDebugObjectName que se encuentra en D3Dcommon.h. Por ejemplo, para asignar un nombre a pTexture con un nombre SDKLayer de mytexture.jpg, use el código siguiente:

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );

Normalmente, debe compilar estas llamadas fuera de la versión de producción.

Dispositivos