Compartir a través de


Información general sobre diagnóstico de gráficos

Diagnóstico de gráficos le ayuda a depurar errores de representación en juegos y aplicaciones de DirectX.

Requisitos de Visual Studio 2013

Para usar Diagnóstico de gráficos en Visual Studio 2013, debe tener una de estas ediciones:

  • Visual Studio 2013 Ultimate

  • Visual Studio 2013 Premium

  • Visual Studio 2013 Professional

  • Visual Studio 2013 Express para Windows

NotaNota

Visual Studio 2013 Express para escritorio de Windows no admite las características de Diagnóstico de gráficos.

Sistema operativo y requisitos del SDK

El Kit de desarrollo de software de Windows (SDK) para Windows 8,1 instala los componentes en tiempo de ejecución que requiere Diagnóstico de gráficos y admite el desarrollo para Windows 8,1 y Windows 8. Para usar Diagnóstico de gráficos en Windows 7 y Windows Vista, debe instalar uno de los SDK siguientes:

  • Windows SDK (versión 7.1)

  • SDK de DirectX (junio de 2010)

Compatibilidad de versiones de DirectX

Diagnóstico de gráficos admite aplicaciones que usan Direct3D 10, Direct3D 10.1, Direct3D 11, Direct3D 11.1 y Direct3D 11.2 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.

Windows 8.1 y Direct3D 11.2

En Windows 8,1, DirectX 11.2 introduce nuevas características que incluyen compatibilidad para capturar información de gráficos durante el tiempo de ejecución. Windows 8,1 utiliza la nueva captura basada en el tiempo de ejecución, conocida como captura robusta, exclusivamente para todas las versiones de DirectX que admite Windows 8,1. La captura robusta también admite nuevas características de Direct3D 11.2.

Compatibilidad de Windows 8 y Windows 7

Como las versiones anteriores de Windows no admiten DirectX 11.2, la captura robusta no está disponible en estas plataformas. En lugar de eso, las aplicaciones que se ejecutan en Windows 8 o Windows 7 utilizan el método de captura anterior basado en la desviación, conocido como captura heredada. Como no es necesario que sea compatible en Windows 8,1, la captura heredada está en desuso; sin embargo, todavía está disponible para admitir aplicaciones que se ejecutan en Windows 8 o Windows 7.

Compatibilidad limitada con Direct2D

Como Direct2D es una API de modo de usuario basada en Direct3D, puede utilizar Diagnóstico de gráficos para ayudar a depurar problemas de representación en aplicaciones que usan Direct2D. Sin embargo, puesto que, en lugar de los eventos de alto nivel de Direct2D, solo se registran los eventos subyacentes de Direct3D, los eventos de Direct2D no aparecerán en la lista de eventos de gráficos. Además, como la relación entre los eventos de Direct2D y los eventos resultantes de Direct3D no siempre está clara, el uso de Diagnóstico de gráficos para depurar problemas de representación en aplicaciones que utilizan Direct2D no es sencillo. No obstante, puede utilizar Diagnóstico de gráficos para obtener información sobres problemas de representación de bajo nivel en aplicaciones que utilizan Direct2D.

Cambios de la interfaz de usuario de Visual Studio 2013 Update 3

A partir de Visual Studio 2013 Update 3, las ventanas de herramientas de diagnóstico de gráficos se hospedan en una copia independiente del shell de Visual Studio para reducir el número de ventanas de herramientas que compiten por el espacio limitado del IDE principal de Visual Studio. El shell personalizado que hospeda ahora las herramientas de diagnóstico de gráficos, que se denomina Análisis de gráficos de Visual Studio, elimina los menús y opciones que el diagnóstico de gráficos no necesita, pero las herramientas y los flujos de trabajo de diagnóstico de gráficos son similares al diagnóstico de gráficos de las versiones anteriores de Visual Studio.

Hay dos diferencias importantes:

  1. Cuando se ejecuta la aplicación en diagnóstico de gráficos, Visual Studio ya no muestra una versión activa del documento de registro de gráficos. En su lugar, Visual Studio proporciona una nueva interfaz de captura. Este es el aspecto de la nueva interfaz de captura:

    La herramienta de uso de la GPU.

    Desde esta interfaz, puede capturar uno o varios fotogramas en el registro de gráficos y ver gráficos en tiempo real que muestran la velocidad de fotogramas de la aplicación, así como el tiempo, en milisegundos, que tarda cada fotograma en presentarse.

  2. No se puede editar el código en el shell de Análisis de gráficos; si abre el código para editarlo en Análisis de gráficos, se abrirá en el IDE principal de Visual Studio y se le dará el foco.

Esta interfaz es lo que ve en Visual Studio. Para iniciar Análisis de gráficos de Visual Studio, elija uno de los fotogramas siguiendo el vínculo Fotograma..., situado sobre la miniatura de la imagen, o haga doble clic en la miniatura.

Usar Diagnóstico de gráficos para depurar problemas de representación

La depuración de problemas de representación en una aplicación repleta de gráficos no es tan sencilla como iniciar un depurador y recorrer el código. En cada fotograma se producen cientos de miles de píxeles únicos, cada uno según un conjunto complejo de estado, datos, parámetros y código, de los cuales quizás solo algunos píxeles muestren el problema que intenta diagnosticar. Para complicar aún más las cosas, el código que genera cada píxel se ejecuta en hardware especializado que procesa cientos de píxeles en paralelo. Las herramientas y técnicas de depuración tradicionales, difíciles de utilizar incluso en código con pocos subprocesos, son ineficaces cuando hay que hacer frente a tantos datos.

Las herramientas de Diagnóstico de gráficos de Visual Studio están diseñadas para ayudarle a encontrar problemas de representación a partir de los artefactos visuales que indican el problema y, a continuación, remontarse al origen del problema centrándose únicamente en el código del sombreador, las etapas de canalización, las llamadas de dibujo, los recursos y el estado del dispositivo pertinentes en el propio código fuente de la aplicación.

Estos son algunos tipos de problemas de representación que Visual Studio puede ayudarle a solucionar.

  • Estado del dispositivo
    La configuración correcta del dispositivo gráfico es importante porque determina cómo la canalización de gráficos interpreta los datos asociados a cada llamada a draw y cómo se combinan los resultados de la llamada a draw. Por ejemplo, si el estado del dispositivo especifica el orden de generación de vértices en el sentido de las agujas del reloj, ningún modelo que especifique vértices en el orden inverso se generará correctamente. Los problemas de estado del dispositivo pueden ser difíciles de diagnosticar porque la raíz del problema en el código fuente a menudo está muy alejada de los objetos afectados. Mediante la herramienta Diagnóstico de gráficos, puede ver el estado actual del dispositivo en cualquier momento durante la representación.

  • Parámetros y búferes de constantes sin inicializar o incorrectos
    Las aplicaciones gráficas usan búferes de constantes y parámetros para pasar datos adicionales a una o varias llamadas de dibujo. Por ejemplo, los datos pueden especificar ubicaciones o aspectos distintos para diferentes objetos. Cuando estos datos no están inicializados o contienen valores incorrectos, el objeto correspondiente se genera incorrectamente o no se genera en absoluto. Este tipo de problema puede ser difícil de diagnosticar porque no siempre está claro si el problema está en los datos o en el código del sombreador que los utiliza. También puede resultar difícil determinar qué sombreadores, búferes de constantes y parámetros corresponden al error. Puede utilizar Diagnóstico de gráficos para determinar los sombreadores, búferes de constantes y parámetros que se aplican a cada llamada a draw y ver su contenido.

  • Errores del sombreador
    Cometer un error en el código de la aplicación es casi inevitable, tanto si el código es C++ como HLSL (High Level Shader Language). Sin embargo, la depuración de código HLSL suele ser más difícil porque no dispone de la buena compatibilidad de depuración de la que disfrutan C++ y otros lenguajes. Diagnóstico de gráficos aporta las herramientas de depuración tradicionales de código a HLSL para poder recorrer el código, establecer puntos de interrupción y examinar el contenido de las variables, parámetros y búferes de constantes.

Cómo funciona Diagnóstico de gráficos

Para usar Diagnóstico de gráficos, primero debe registrar información sobre cómo una aplicación utiliza la API de Direct3D mientras se ejecuta y después examinar el comportamiento registrado. Para los fotogramas especificados, la información que se registra incluye llamadas API (como las que borran la pantalla, dibujan la geometría, envían sombreadores de cálculo o cambian el estado del dispositivo gráfico), además de sus argumentos y las copias de búferes y objetos a los que se hace referencia indirectamente. Asimismo, las llamadas API relacionadas con la configuración y la inicialización se registran ante de que se representen los fotogramas. La información que se registra se escribe en un archivo de registro de gráficos (.vsglog).

Deberá recrear el comportamiento de representación recopilado en el registro de gráficos reproduciendo los eventos de gráficos en el equipo de desarrollo o en un equipo o dispositivo remoto. El equipo de reproducción puede ser el mismo equipo o dispositivo donde se recopiló el registro de gráficos o uno diferente. Para la mayoría de las características de reproducción, se utiliza el hardware gráfico del equipo de reproducción para reproducir eventos de gráficos, pero cuando se usa el depurador de HLSL, el código del sombreador siempre se reproduce mediante una GPU emulada en la CPU. El uso de una GPU emulada permite recorrer el código del sombreador, inspeccionar variables y usar otras características de depuración comunes independientemente de si el hardware gráfico del equipo de reproducción admite la depuración de hardware.

NotaNota

Aunque un registro de gráficos captura la mayoría de la información pertinente internamente, se requiere información adicional para usar plenamente algunas de las características de Diagnóstico de gráficos.Por ejemplo, para usar la característica de pila de llamadas de gráficos en su totalidad, también tiene que tener el archivo de base de datos del programa (.pdb) y el código fuente de la aplicación.Para depurar código fuente del sombreador de HLSL, también tiene que tener el código fuente del sombreador.(Si el sombreador se compila con el compilador del sombreador D3D11.1 y se habilita la información de depuración, el código fuente del sombreador se inserta en el registro de gráficos durante la captura).

NotaNota

Como algunas API pueden no estar disponibles en versiones anteriores de Windows o DirectX, no puede reproducir registros de gráficos que han capturado estas llamadas API en una máquina de reproducción que no los admite.

Registros de gráficos

Un registro de gráficos contiene uno o varios fotogramas capturados desde una aplicación de gráficos DirectX en ejecución. Como los registros de gráficos son independientes entre sí, estos fotogramas se pueden volver a crear más tarde sin información o referencias externas. Esto significa que puede compartir los registros de gráficos con otros desarrolladores, examinar problemas en equipos diferentes y examinar antiguos registros de gráficos incluso si los modelos y las texturas se han cambiado en el desarrollo. También puede cargar varios archivos de registro de gráficos (.vsglog) al mismo tiempo para comparar los datos y los resultados de representación.

Para abrir un archivo de registro de gráficos (vsglog)

  1. En Visual Studio, en la barra de menús, elija Archivo, Abrir, Archivo. Aparece el cuadro de diálogo Abrir archivo.

  2. Especifique un archivo de registro de gráficos (.vsglog) para abrirlo y, a continuación, elija el botón Abrir.

NotaNota

Puede extraer, modificar y guardar copias de mallas y texturas de un registro de gráficos mediante las herramientas de gráficos que forman parte de Visual Studio.Sin embargo, el contenido del registro de gráficos no se ve afectado por estas modificaciones.Para obtener información sobre estas herramientas de gráficos, vea Trabajar con activos 3D para juegos y aplicaciones.

La barra de herramientas de gráficos

La barra de herramientas de gráficos proporciona acceso directo a los comandos y las ventanas de herramientas de Diagnóstico de gráficos.

Barra de herramientas de gráficos en el modo de diagnóstico de gráficos

El botón Iniciar diagnóstico ejecuta la aplicación en Diagnóstico de gráficos. Cuando una aplicación se ejecuta en Diagnóstico de gráficos, se habilita el botón Capturar el siguiente fotograma presentado, y se puede usar los demás botones para ver las distintas ventanas de herramientas. Para obtener más información sobre cómo ejecutar la aplicación con Diagnóstico de gráficos y capturar información de gráficos, vea Capturar información de gráficos.

Ventanas de herramientas de Diagnóstico de gráficos

La ilustración siguiente muestra una distribución típica de las ventanas de herramientas que se utilizan para inspeccionar y depurar los fotogramas capturados. Cada ventana expone una categoría de información diferente sobre el fotograma capturado que se va a inspeccionar e incluso sobre los píxeles individuales del fotograma.

Todas las ventanas del depurador de gráficos

Panel de control de DirectX

El panel de control de DirectX es un componente de DirectX que puede utilizar para cambiar la forma en que DirectX se comporta; por ejemplo, puede habilitar la versión de depuración de los componentes de tiempo de ejecución de DirectX, seleccionar la clase de mensajes de depuración que se notifican e impedir el uso de ciertas funciones del hardware gráfico para emular el hardware menos eficaz. Este nivel de control sobre DirectX puede ayudarle a depurar y probar la aplicación DirectX. Puede acceder al panel de control de DirectX desde Visual Studio.

Para abrir el panel de control de DirectX

  • En la barra de menús, elija Depurar, Gráficos, Panel de control de DirectX.

Vea también

Conceptos

Depurador de HLSL