Návod: Zaznamenání grafických informací prostřednictvím kódu

Můžete použít Visual Studio grafické diagnostiky programově zaznamenat informace o grafickém z Direct3D aplikace.

Programové sběr dat je obzvláště užitečná pro ladění výpočetní shaderů v aplikacích, které volají nikdy Present, nebo kdy je obtížné předvídat a zachytit v příručce k potížím vykreslování testování, ale lze programově předpovědět pomocí informací o stavu aplikace za běhu.

Programové sběr dat v rozhraní DirectX 11.2

Tato část návodu ukazuje programový sběr dat v aplikacích, které používají rozhraní DirectX 11.2 API, které používá metodu robustní zachycení.Informace o tom, jak používat programový sběr dat v aplikacích, které používají starší verze rozhraní DirectX naleznete v tématu programový sběr dat v rozhraní DirectX 11.1 a starších verzích dále v tomto návodu.

V této části ukazuje, jak provádět tyto úlohy:

  • Příprava vaší aplikaci, aby používala programový sběr dat

  • Získání rozhraní IDXGraphicsAnalysis

  • Zachycení informací grafiky

[!POZNÁMKA]

Předchozí implementace programový zachycení spoléhali na Remote Tools for Visual Studio k poskytování zachycení funkce, ale DirectX 11.2 podporuje sběr dat přímo.V důsledku toho již máte k instalaci nástroje pro vzdálenou pro programovou zachycení v aplikacích, které používají rozhraní API DirectX 11.2.

Příprava vaší aplikaci, aby používala programový sběr dat

Příprava vaše Direct3D 11.2 aplikaci, aby používala programový sběr dat je ve dvou krocích.Nejprve přesvědčte se, zda mají být zahrnuty hlavičkové soubory, které potřebuje programový sběr dat a pak definovat rozhraní IDXGraphicsAnalysis ve zdrojovém kódu vaší aplikace.

Chcete-li zahrnout programový zachycení záhlaví

  • Tato záhlaví zahrňte do zdrojového souboru, kde můžete definovat rozhraní IDXGraphicsAnalysis:

    #include <DXGItype.h>
    #include <dxgi1_2.h>
    #include <dxgi1_3.h>
    
    Důležitá poznámkaDůležité

    Nezahrnujte souboru hlaviček vsgcapture.h– což podporuje programový sběr dat v rozhraní DirectX 11.1 a starších verzích – k provedení programový zachycení ve vašich aplikacích DirectX 11.2.Toto záhlaví není kompatibilní s DirectX 11.2.Pokud tento soubor je zahrnuta po d3d11_2 záhlaví je zahrnuta, kompilátor vydá varování.Pokud vsgcapture.h je zahrnuta před d3d11_2, nebude možné spustit aplikaci.

    [!POZNÁMKA]

    Pokud červen 2010 sadu SDK rozhraní DirectX je nainstalována ve svém počítači a cesta zahrnutí svůj projekt obsahuje %DXSDK_DIR%include\x86, přesunete jej na konec cesty vložení.Takovému jednání pro vaše cesty knihovny.

Chcete-li definovat rozhraní IDXGraphicsAnalysis

  • Definujte rozhraní IDXGraphicsAnalysis ve stejném souboru, která obsahuje hlavičkové soubory.

    interface DECLSPEC_UUID("9f251514-9d4d-4902-9d60-18988ab7d4b5") DECLSPEC_NOVTABLE
    IDXGraphicsAnalysis : public IUnknown
    {
        STDMETHOD_(void, BeginCapture)() PURE;
        STDMETHOD_(void, EndCapture)() PURE;
    };
    

Ke zvýšení pohodlí můžete provést tyto kroky do nového souboru hlavičky a potom ji kde ji potřebujete zahrnout ve vaší aplikaci.

Získání rozhraní IDXGraphicsAnalysis

Předtím, než můžete shromáždit informace o grafickém ze DirectX 11.2, je nutné vytvořit rozhraní ladění rozhraní DXGI.

Chcete-li získat rozhraní IDXGraphicsAnalysis

  • Použijte následující kód, abyste připojili IDXGraphicsAnalysis rozhraní pro ladění rozhraní DXGI.

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

    Zkontrolujte HRESULT vrácené DXGIGetDebugInterface1 k zajištění získat platný rozhraní jej před použitím:

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

    [!POZNÁMKA]

    Pokud aplikace není spuštěn v grafickém diagnostiky (Alt + F5 v Visual Studio), DXGIGetDebugInterface1 chybovou zprávu: Č E_NOINTERFACE takové rozhraní podporována.

Zachycení informací grafiky

Nyní, když máte platný IDXGraphicsAnalysis rozhraní, můžete použít BeginCapture a EndCapture tak, aby zachytával grafické informace.

Chcete-li zaznamenat informace o grafickém

  • Chcete-li spustit zachycování informací grafiky, použijte BeginCapture:

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

    Sběr dat začíná bezprostředně po BeginCapture je volána; nečeká se na další snímek, chcete-li začít.Zachycení zastaví, když jsou uvedeny aktuální snímek, nebo když zavoláte EndCapture:

    ...
    pGraphicsAnalysis->EndCapture();
    ...
    

Programové sběr dat v rozhraní DirectX 11.1 a starších verzích

Tato část návodu ukazuje programový sběr dat v aplikacích, které používají rozhraní DirectX 11.1 API, které používá metodu starší verze zachycení.Informace o tom, jak používat programový sběr dat v aplikacích, které používají rozhraní DirectX 11.2 naleznete v tématu Programmatic zachytit v rozhraní DirectX 11.2 dříve v tomto návodu.

Tato část zobrazuje tyto úlohy:

  • Příprava počítače pro používání programový sběr dat

  • Příprava vaší aplikaci, aby používala programový sběr dat

  • Konfigurace název a umístění souboru protokolu grafiky

  • Pomocí CaptureCurrentFrame rozhraní API

Příprava počítače pro používání programový sběr dat

Programové zachycení rozhraní API používá Remote Tools for Visual Studio možnost nakonfigurovánu zachycení.Počítače, kde bude spuštěna aplikace musí mít nástroje pro vzdálenou nainstalován, i v případě, že používáte programové sběr dat v místním počítači.Visual Studionemusí být spuštěna při provádění programový sběr dat v místním počítači.

Chcete-li použít vzdálený sběr rozhraní API v aplikace, která běží na počítači, je nejprve třeba nainstalovat Remote Tools for Visual Studio v tomto počítači.Různé verze nástroje pro vzdálenou podporu jiný hardware platformy.Informace o tom, jak nainstalovat nástroje pro vzdálenou naleznete v tématu stránce Stažení nástroje pro vzdálenou na Microsoft soubory ke stažení webu.

Alternativně Visual Studio nainstaluje komponenty potřebné k provedení vzdálené sběr dat pro 32bitové aplikace.

[!POZNÁMKA]

Protože většina aplikací pro klasickou plochu Windows – včetně Visual Studio– nejsou podporované v Windows 8 pro ARM zařízení pomocí Remote Tools for Visual Studio společně s programový zachycení rozhraní API je jediný způsob, jak zaznamenávat diagnostiku grafiky na zařízeních ARM.

Příprava vaší aplikaci, aby používala programový sběr dat

Při použití nástroje pro diagnostiku grafiky, je nutné nejprve zaznamenávají grafické informace, které závisí na.Informace můžete zaznamenávat programově pomocí CaptureCurrentFrame rozhraní API.

Chcete-li připravit svou aplikaci programově zaznamenat informace o grafickém

  1. Ujistěte se, že vsgcapture.h záhlaví je zahrnuta ve zdrojovém kódu pro aplikaci.Mohou být součástí pouze na jednom místě – například v souboru zdrojového kódu, kde budete volat programový zachycení rozhraní API – nebo v souboru předkompilované hlavičky pro volání rozhraní API z více zdrojových souborů kódu.

  2. Ve zdrojovém kódu pro aplikaci, kdykoli budete chtít zachytit zbývající aktuálního rámce, volejte g_pVsgDbg->CaptureCurrentFrame().Tato metoda nebere žádné parametry a nevrací hodnotu.

Konfigurace název a umístění souboru protokolu grafiky

V grafickém protokolu je vytvořen v umístění, který je definován DONT_SAVE_VSGLOG_TO_TEMP a VSG_DEFAULT_RUN_FILENAME makra.

Konfigurovat název a umístění souboru protokolu grafiky

  • K tomu, aby v grafickém protokolu probíhá zápis k dočasnému adresáři předtím, než #include <vsgcapture.h> řádku, přidejte tento:

    #define DONT_SAVE_VSGLOG_TO_TEMP
    

    Tato hodnota k zápisu do protokolu grafické do umístění, které je relativní vzhledem k pracovní adresář nebo na absolutní cestu, můžete definovat Pokud definici VSG_DEFAULT_RUN_FILENAME je absolutní cestu.

  • Uložit v grafickém protokolu na jiné místo nebo mu jiný název souboru, předtím, než #include <vsgcapture.h> řádku, přidejte tento:

    #define VSG_DEFAULT_RUN_FILENAME <filename>
    

    Pokud nechcete provést tento krok, název souboru je default.vsglog.Pokud nebylo definujete DONT_SAVE_VSGLOG_TO_TEMP, pak umístění souboru je relativní vzhledem k dočasnému adresáři; v ostatních případech je relativní vzhledem k pracovní adresář nebo v jiném umístění-li zadán absolutního názvu souboru.

Pro Windows Store aplikace, umístění dočasného adresáře je specifické pro každého uživatele a aplikace a zpravidla se nachází v umístění například C:\users\uživatelské jméno\AppData\Local\Packages\název rodiny balíček\TempState\.Pro klientské aplikace, umístění dočasného adresáře je specifické pro každého uživatele a zpravidla se nachází v umístění například C:\Users\uživatelské jméno\AppData\Local\Temp\.

[!POZNÁMKA]

Chcete-li zapisovat do konkrétního umístění, musí mít oprávnění k zápisu do tohoto umístění. v opačném případě dojde k chybě.Mějte na paměti, že Windows Store aplikace jsou omezeny více než aplikací pro klasickou plochu o jejich může zapisovat data kde může vyžadovat dodatečnou konfiguraci k zápisu do určitých místech.

Zachycování informací grafiky

Po připravit na aplikaci pro programovou sběr dat a volitelně nakonfigurovat umístění a název grafiky souboru protokolu, vytvářet aplikace a potom spusťte nebo proveďte ladění a sběru dat; nelze spustit diagnostiku grafiky z Visual Studio při použití programový zachycení rozhraní API.V grafickém protokolu je zapsán do umístění, které jste zadali.Pokud chcete zachovat tato verze protokolu, přesunete do jiného umístění; jinak budou přepsány při dalším spuštění aplikace.

Tip

Můžete stále shromáždit informace o grafickém ručně při používání programový zachycení – s aplikací v fokus, stačí stisknout tisk obrazovky.Tento postup slouží k získání informací dalšího grafického, který není zachycen programový zachycení rozhraní API.

Další kroky

V tomto návodu ukazovala jak zaznamenat informace o grafickém programově.Jako další krok zvažte tuto možnost:

  • Naučte se analyzovat zachycená grafické informace pomocí grafiky diagnostické nástroje.Další informace naleznete v tématu Přehled diagnostiky grafiky.

Viz také

Úkoly

Návod: Zaznamenání grafických informací

Koncepty

Zaznamenání grafických informací