Share via


Depurar gráficos de DirectX

Visual Studio contiene herramientas de diagnóstico que puede utilizar para ayudarle a a solucionar problemas de representación de juegos y aplicaciones basados en DirectX.

Gráficos de DirectX de depuración en Visual Studio

La depuración de los problemas de representación en un juego o una aplicación no suele ser tan fácil como iniciar un depurador y recorrer el código.Los problemas de representación del diagnóstico de gráficos presenta varios retos únicos.Por ejemplo, en cualquier marco determinado, cientos de miles (sino millones) de píxeles se producen como resultado y varias veces más de que podría producirse, pero nunca se ven; de todos estos quizás solo algunos píxeles exhibirán el problema que intenta diagnosticar.Además, que puede haber varios gigabytes de datos tras cada fotograma representado y para complicar las cosas incluso más, todos estos datos se procesan en hardware dedicado que divide el trabajo entre cientos o miles de unidades de procesamiento especializadas, todas ellas fuera de la observación directa de la unidad central de procesamiento (CPU).Los depuradores tradicionales no están diseñados para solucionar este tipo de desafíos.

Las herramientas de diagnóstico de gráficos de Visual Studio están diseñadas para ayudarle a encontrar el origen de los problemas de representación a partir de los artefactos visuales que indican el problema y, a continuación, realizar un seguimiento hacia atrás a través del código del sombreador, la canalización de gráficos, las llamadas a draw, el estado de los recursos y el dispositivo relacionados, incluso a través del propio código fuente de la aplicación.

Algunas de las clases de problemas de representación con las que Visual Studio puede ayudarle.

Hh315751.collapse_all(es-es,VS.110).gifEstado del dispositivo

La configuración correcta del dispositivo gráfico es importante porque establece las expectativas que el modelo y los datos de textura deben cumplir en toda la aplicación.Por ejemplo, si el estado del dispositivo especifica que el orden de generación sea en sentido de las agujas del reloj, los modelos que especifiquen vértices en dirección contraria a las agujas del reloj no se representarán correctamente; o si se ha establecido la función de prueba de profundidad en mayor que, los objetos más alejados se dibujarán sobre los objetos más cercanos.Los problemas del estado del dispositivo pueden ser difíciles de diagnosticar porque la raíz del problema en el código fuente no se quita en muchas ocasiones de los objetos afectados.

El diagnóstico de gráficos ayudan a examinar los datos y el estado del dispositivo tras los píxeles afectados para poder restringir los problemas del estado del dispositivo.

Hh315751.collapse_all(es-es,VS.110).gifErrores del sombreador

Hacer un error en el código de la aplicación es casi inevitable, bien si el código es C++ o High Level Shader Language (HLSL).Sin embargo, la depuración de código de HLSL viene siendo más difícil porque no ha tenido una buena compatibilidad de depuración que puedan usar C++ y otros lenguajes.

El diagnóstico de gráficos pueden ayudarle a detectar y corregir errores del sombreador porque permite depurar código de HLSL.Al usar la información capturada en un registro de gráficos, el depurador de HLSL puede “reproducir” eventos de dibujo en el nivel del sombreador para poder recorrer la ejecución, establezca puntos de interrupción y examinar el contenido de las variables temporales, parámetros y búferes de constantes.Para ayudarle a centrar su atención en lo que busca, el motor de diagnóstico de gráficos proporciona puntos de entrada al depurador de HLSL desde los eventos de dibujo (a través de la ventana Etapas de canalización de gráficos), y desde píxeles individuales (mediante el Historial de píxeles de gráfico).

Hh315751.collapse_all(es-es,VS.110).gifParámetros y contantes sin inicializar o incorrectos

Las aplicaciones gráficas usan parámetros y búferes constantes para proporcionar eficazmente información para la canalización de gráficos para poder transformar o representar diferentes objetos de manera diferente mediante código personalizado del sombreador.Cuando no se ha inicializado un búfer constante o un parámetro, o cuando no contiene el valor previsto, el objeto correspondiente se genera incorrectamente, o quizás en absoluto.Los problemas con un búfer constante o parámetro pueden ser difíciles de diagnosticar porque no siempre está claro si el error esté causado por un problema con un búfer constante o un parámetro, o por un error en código de presentación y, si es un error de presentación, que los sombreadores corresponden al.

El diagnóstico de gráficos puede ayudarle a identificar los sombreadores que corresponden al error y usar el depurador de HLSL para inspeccionar el código del sombreador de forma que pueda restringir según los parámetros y problemas del búfer constante.Cuando esté satisfecho con el código de sombreador, puede utilizar el depurador de HLSL para identificar parámetros o constantes sospechosos, la Pila de llamadas de eventos gráficos para navegar por el código de la aplicación que presentó el objeto afectado y, a continuación, localizar dónde se estableció por última vez el parámetro o el búfer de constantes.

Compatibilidad de versiones de DirectX

El diagnóstico de gráficos admite aplicaciones que usan Direct3D 10, Direct3D 10.1, Direct3D 11 y Direct3D 11.1 y proporciona compatibilidad limitada para las aplicaciones que usan Direct2D.No admite las aplicaciones que usan versiones anteriores de Direct3D, DirectDraw u otras API gráficas.

Hh315751.collapse_all(es-es,VS.110).gifCompatibilidad limitada con Direct2D

Dado que la API de Direct2D usa la API de Direct3D API para gran parte de su funcionalidad, el diagnóstico de gráficos se puede usar para ayudar a depurar las aplicaciones que usan Direct2D.Sin embargo, como el diagnóstico de gráficos se enlaza a los eventos subyacentes de Direct3D en lugar de a eventos de alto nivel de Direct2D, no captura los detalles de los eventos de Direct2D que no usan Direct3D.También, porque las relaciones entre las llamadas API de Direct2D y las llamadas API de Direct3D resultantes no siempre están claras, el uso del diagnóstico de gráficos para aplicaciones de Direct2D no es sencillo.No obstante, puede utilizar el diagnóstico de gráficos para obtener información sobre los problemas de representación de bajo nivel en aplicaciones que utilizan Direct2D.

Sistema operativo y requisitos del SDK

Windows 8 instala los componentes del runtime necesarios para las características de depuración de gráficos que se describen en este documento.Para utilizar estas características en Windows 7 y Windows Vista, primero debe instalar uno de los kits de desarrollo de software (SDK) siguientes:

  • SDK de DirectX (junio de 2010)

  • Windows SDK (versión 7.1)

Temas relacionados

Título

Descripción

Diagnóstico de gráficos

Describe cómo usar el diagnóstico de gráficos para diagnosticar y para depurar problemas de representación en aplicaciones basadas en DirectX.

Ejemplos de diagnóstico de gráficos

Proporciona vínculos a artículos que muestran cómo utilizar los gráficos Diagnósticos para capturar información de gráficos y diagnosticar problemas comunes de la representación.

Depurar en Visual Studio

Presenta la funcionalidad de depuración en Visual Studio.

Gráficos y juegos en DirectX

Proporciona vínculos a artículos que explican tecnologías de gráficos de DirectX.