Procédure pas à pas : capture d'informations Graphics par programmationWalkthrough: Capturing Graphics Information Programmatically

Vous pouvez utiliser les outils Graphics Diagnostics de Visual StudioVisual Studio pour capturer par programmation les informations graphiques d'une application Direct3D.You can use Visual StudioVisual Studio Graphics Diagnostics to programmatically capture graphics information from a Direct3D app.

La capture par programmation est particulièrement utile dans les scénarios suivants :Programmatic capture is useful in scenarios such as:

  • Commencez la capture par programmation quand votre application graphique n'utilise pas de chaîne de permutation, par exemple quand elle restitue une texture.Begin capture programmatically when your graphics app doesn't use swapchain present, such as when it renders to a texture.

  • Commencez la capture par programmation quand votre application n'effectue aucun rendu, par exemple, quand elle utilise DirectCompute pour les calculs.Begin capture programmatically when your app doesn't render at all, such as when it uses DirectCompute to perform calculations.

  • Appelez CaptureCurrentFramequand un problème de rendu est difficile à prévoir et à capturer dans le cadre d'un test manuel, mais qui peut être prédit par programmation à partir d'informations sur l'état de l'application au moment de l'exécution.Call CaptureCurrentFramewhen a rendering problem is difficult to anticipate and capture in manual testing but can be predicted programmatically by using information about the state of the app at runtime.

Capture par programmation dans Windows 10Programmatic capture in Windows 10

Cette partie de la procédure pas à pas illustre la capture par programmation dans les applications qui utilisent l’API DirectX 11.2 dans Windows 10, qui utilise la méthode de capture robuste.This part of the walkthrough demonstrates programmatic capture in apps that use the DirectX 11.2 API on Windows 10, which uses the robust capture method.

Cette section montre comment effectuer ces tâches :This section shows how to do these tasks:

  • Préparation de votre application à l'utilisation de la capture par programmationPreparing your app to use programmatic capture

  • Obtention de l'interface IDXGraphicsAnalysisGetting the IDXGraphicsAnalysis interface

  • Capture d'informations graphiquesCapturing graphics information

Note

Les implémentations précédentes de capture par programmation dépendaient des outils à distance pour Visual Studio pour Visual StudioVisual Studio pour fournir des fonctionnalités de capture.Previous implementations of programmatic capture relied on Remote Tools for Visual Studio for Visual StudioVisual Studio to provide capture functionality.

Préparation de votre application à l'utilisation de la capture par programmationPreparing your app to use programmatic capture

Pour utiliser la capture par programmation dans votre application, celle-ci doit inclure les en-têtes nécessaires.To use programmatic capture in your app, it must include the necessary headers. Ces en-têtes font partie du SDK Windows 10.These headers are part of the Windows 10 SDK.

Pour inclure les en-têtes de capture par programmationTo include programmatic capture headers
  • Incluez les en-têtes suivants dans le fichier source où sera définie l'interface IDXGraphicsAnalysis :Include these headers in the source file where you will define the IDXGraphicsAnalysis interface:

    #include <DXGItype.h>  
    #include <dxgi1_2.h>  
    #include <dxgi1_3.h>  
    #include <DXProgrammableCapture.h>  
    

    Important

    N’incluez pas l’en-tête vsgcapture.h—which prend en charge la programmation capture de fichiers sur Windows 8.0 et versions antérieures, pour effectuer la capture par programmation dans vos applications Windows 10.Do not include the header file vsgcapture.h—which supports programmatic capture on Windows 8.0 and earlier—to perform programmatic capture in your Windows 10 apps. Cet en-tête est incompatible avec DirectX 11.2.This header is incompatible with DirectX 11.2. Si ce fichier est inclus après que l’en-tête d3d11_2.h est inclus, le compilateur émet un avertissement.If this file is included after the d3d11_2.h header is included, the compiler issues a warning. Si vsgcapture.h est inclus avant d3d11_2.h, l’application ne démarre pas.If vsgcapture.h is included before d3d11_2.h, the app will not start.

    Note

    Si le Kit de développement logiciel (SDK) DirectX de juin 2010 est installé sur votre machine et que le chemin include de votre projet contient %DXSDK_DIR%includex86, déplacez-le à la fin du chemin include.If the June 2010 DirectX SDK is installed on your machine and your project's include path contains %DXSDK_DIR%includex86, move it to the end of the include path. Faites-en autant pour le chemin d'accès à votre bibliothèque.Do the same for your library path.

Obtention de l'interface IDXGraphicsAnalysisGetting the IDXGraphicsAnalysis interface

Avant de pouvoir capturer les informations graphiques de DirectX 11.2, vous devez obtenir l'interface de débogage DXGI.Before you can capture graphics information from DirectX 11.2, you have to get the DXGI debug interface.

Important

Lorsque vous utilisez la capture par programmation, vous devez toujours exécuter votre application dans graphics diagnostics (Alt + F5 dans Visual StudioVisual Studio) ou sous la l’outil de ligne de commande de Capture.When using programmatic capture, you must still run your app under graphics diagnostics (Alt+F5 in Visual StudioVisual Studio) or under the Command-Line Capture Tool.

Pour obtenir l'interface IDXGraphicsAnalysisTo get the IDXGraphicsAnalysis interface
  • Utilisez le code suivant pour raccorder l'interface IDXGraphicsAnalysis à l'interface de débogage DXGI.Use the following code to hook up the IDXGraphicsAnalysis interface to the DXGI debug interface.

    IDXGraphicsAnalysis* pGraphicsAnalysis;  
    HRESULT getAnalysis = DXGIGetDebugInterface1(0, __uuidof(pGraphicsAnalysis), reinterpret_cast<void**>(&pGraphicsAnalysis));  
    

    Veillez à consulter le HRESULT retourné par DXGIGetDebugInterface1 pour vous assurer d’obtenir une interface valide avant de l’utiliser :Be sure to check the HRESULT returned by DXGIGetDebugInterface1 to ensure you get a valid interface before you use it:

    if (FAILED(getAnalysis))  
    {  
        // Abort program or disable programmatic capture in your app.  
    }  
    

    Note

    Si DXGIGetDebugInterface1 renvoie E_NOINTERFACE (error: E_NOINTERFACE No such interface supported), vérifiez que l’application est exécutée dans Graphics Diagnostics (Alt+F5 dans Visual StudioVisual Studio).If DXGIGetDebugInterface1 returns E_NOINTERFACE (error: E_NOINTERFACE No such interface supported), make sure the app is running under graphics diagnostics (Alt+F5 in Visual StudioVisual Studio).

Capture d'informations graphiquesCapturing graphics information

Maintenant que vous avez une interface IDXGraphicsAnalysis valide, vous pouvez utiliser BeginCapture et EndCapture pour capturer des informations graphiques.Now that you have a valid IDXGraphicsAnalysis interface, you can use BeginCapture and EndCapture to capture graphics information.

Pour capturer des informations graphiquesTo capture graphics information
  • Pour commencer à capturer des informations graphiques, utilisez BeginCapture:To start capturing graphics information, use BeginCapture:

    ...  
    pGraphicsAnalysis->BeginCapture();  
    ...  
    

    La capture commence de suite après l'appel de BeginCapture ; il n'attend pas le frame suivant pour commencer.Capture begins immediately when BeginCapture is called; it doesn't wait for the next frame to begin. La capture s'arrête dès la présentation du frame actif ou l'appel de EndCapture:Capture stops when the current frame is presented, or when you call EndCapture:

    ...  
    pGraphicsAnalysis->EndCapture();  
    ...  
    
  • Après l’appel à EndCapture, libérer l’objet graphics.After the call to EndCapture, release the graphics object.

Étapes suivantesNext Steps

Cette procédure pas à pas vous a montré comment capturer des informations graphiques par programmation.This walkthrough demonstrated how to capture graphics information programmatically. Pour franchir une étape supplémentaire, envisagez cette possibilité :As a next step, consider this option:

  • Découvrez comment analyser les informations graphiques capturées à l'aide des outils Graphics Diagnostics.Learn how to analyze captured graphics information by using the Graphics Diagnostics tools. Consultez vue d’ensemble.See Overview.

Voir aussiSee Also

Procédure pas à pas : Capture d’informations graphiques Walkthrough: Capturing Graphics Information
Capture d’informations graphiques Capturing Graphics Information
Outil de capture en ligne de commandeCommand-Line Capture Tool