Sdílet prostřednictvím


Ladění grafického rozhraní DirectX

Visual Studio obsahuje diagnostické nástroje, které můžete použít k řešení problémů vykreslování her a aplikací založených na rozhraní DirectX.

Ladění grafického rozhraní DirectX v aplikaci Visual Studio

Ladění problémů vykreslování ve hře nebo aplikaci není obvykle stejně snadné jako spuštění ladicího programu a procházení kódu.Diagnostika problémů vykreslování grafiky představuje několik jedinečných úskalí.Například, v rámci výstupu každého rámce jsou generovány stovky tisíc – pokud ne miliony – pixelů. Ještě několikrát více jich může být generováno, ale nikdy neviděno. Pravděpodobně jen několik z nich bude vykazovat problém, který se snažíte diagnostikovat.Kromě toho, za každým renderovaným snímkem může být mnoho gigabajtů dat. Další komplikací je, že všechna tato data jsou zpracovávána na k tomu určenému hardwaru, který rozděluje práci mezi stovky a tisíce specializovaných jednotek, z nichž všechny jsou mimo přímé sledování centrální zpracovávací jednotky (CPU).Tradiční ladicí programy nejsou vytvořené za účelem řešení těchto druhů výzev.

Nástroje Diagnostika grafiky v Visual Studio jsou navrženy tak, aby vám pomohly nalézt zdroj potíží pomocí vizuálních artefaktů, které označují problém a poté zpětným trasováním pomocí kódu shaderu, kanálu grafiky, volání draw, prostředků, stavu zařízení a dokonce prostřednictvím zdrojového kódu aplikace.

Zde jsou některé druhy problémů renderování, se kterými vám může pomoci.

Hh315751.collapse_all(cs-cz,VS.110).gifStav zařízení

Správná konfigurace grafického zařízení je důležitá, protože stanovuje očekávání, která musí data modelu a textury splňovat v rámci celé aplikace.Například, pokud stav zařízení určuje pořadí vinutí ve směru hodinových ručiček, pak každý model, který určuje vrcholy v opačném směru, nebude správně renderován; nebo, pokud byla nastavena funkce zkušební hloubka větší-než, objekty, které jsou vzdálenější, budou namalovány nad objekty, které jsou blíže.Problémy se stavy zařízení může být obtížné diagnostikovat, protože základní příčina problému ve zdrojovém kódu je často vzdálena od dotčených objektů.

Diagnostika grafiky vám může pomoci prozkoumat stav dat a zařízení zapříčiňující ovlivněné obrazové body tak, že se můžete zaměřit na problémy se stavem zařízením.

Hh315751.collapse_all(cs-cz,VS.110).gifChyby shaderu

Že uděláte chybu v kódu aplikace je téměř nevyhnutelné, ať už se jedná o kód jazyka C++ nebo HLSL (High Level Shader Language).Ladění kódu HLSL však tradičně bylo obtížnější, protože nemělo tak bohatou podporu ladění jako C++ a další jazyky.

Diagnostika grafiky vám může pomoci najít a opravit chyby shaderu, protože umožňuje ladění kódu HLSL.Pomocí informací zaznamenaných v protokolu grafiky může ladicí program HLSL „přehrát“ události vykreslení na úrovni shaderu, jejichž prováděním můžete procházet, nastavit zarážky a zkontrolovat obsah dočasných proměnných, parametrů konstantních vyrovnávacích pamětí.Pokud chcete pomoci zaměřit správný prvek, Diagnostika grafiky poskytuje vstupní body ladícího programu HLSL z události kreslení (prostřednictvím okna Fáze kanálu grafiky) a z jednotlivých pixelů (prostřednictvím Historie pixelů grafiky).

Hh315751.collapse_all(cs-cz,VS.110).gifNeinicializované nebo nesprávné parametry a konstanty

Grafické aplikace používají parametry a buffery konstant, aby efektivně poskytovaly informace pro zřetězené zpracování grafiky tak, aby různé objekty mohly být transformovány nebo renderovány různě podle vlastního kódu shaderu.Při konstantní vyrovnávací paměti nebo parametr nebyl inicializován nebo pokud neobsahuje zamýšlenou hodnotou odpovídající objekt je vykreslen nesprávně nebo možná vůbec.Problémy s konstantní vyrovnávací paměti nebo parametr může být obtížné diagnostikovat, protože není vždy zřejmé zda tuto chybu může způsobit potíže s konstantní vyrovnávací paměti nebo parametr nebo chyby v kódu shaderu a pokud je chyba shader, odpovídají které shadery.

Diagnostika grafiky můžete identifikovat shadery, které odpovídají chybě, a použit nástroj HLSL Debugger pro kontrolu kódu shaderu, takže se můžete zaměřit na problémy se zásobníkem parametru a konstant.Pokud jste spokojení se správností kódu shaderu, můžete použít k určení podezřelých parametrů nebo konstant ladící program HLSL. Použijte Zásobník volání události grafiky přejděte do kódu aplikace, která vykresluje příslušný objekt a poté najděte, kde byl naposledy nastaven parametr nebo konstanta vyrovnávací paměti.

Kompatibilita verzí DirectX

Diagnostika grafiky podporuje aplikace používající rozhraní Direct3D 10, Direct3D 10.1, Direct3D 11 a Direct3D 11.1 a poskytuje omezenou podporu pro aplikace, které používají rozhraní Direct2D.Nepodporuje aplikace, které používají starší verze rozhraní Direct3D, rozhraní DirectDraw nebo jiné grafické rozhraní API.

Hh315751.collapse_all(cs-cz,VS.110).gifOmezená podpora rozhraní Direct2D

Protože rozhraní API Direct2D používá pro většinu svých funkcí rozhraní API Direct3D, lze Diagnostiku grafiky použít k ladění aplikací, které používají Direct2D.Protože Diagnostika grafiky se soustředí na základní události Direct3D namísto událostí vyšší úrovně Direct2D, nezachycuje podrobnosti událostí Direct2D, které nepoužívají rozhraní Direct3D.Rovněž proto, že vztahy mezi voláním rozhraní API Direct2D a výsledným voláním rozhraní API Direct3D nejsou vždy jasné, použití Diagnostiky grafiky pro aplikace Direct2D není přímé.Nadále můžete použít diagnostiku grafiky k získání informací o problémech s vykreslováním nízké úrovně v aplikacích, které používají rozhraní Direct2D.

Požadavky na operační systém a SDK

Systém Windows 8 nainstaluje součásti komponent Runtime Components požadované funkcemi ladění grafiky, které jsou popsány v tomto dokumentu.K použití těchto funkcí v systémech Windows 7 a Windows Vista je třeba nainstalovat jeden z následujících balíčků Software Development Kit (SDK):

  • DirectX SDK (červen 2010)

  • Windows SDK (verze 7.1)

Příbuzná témata

Title

Description

Diagnostika grafiky

Popisuje způsob použití Diagnostiky grafiky k diagnostikování a ladění problémů vykreslení v aplikacích založených na rozhraní DirectX.

Příklady Diagnostika grafiky

Obsahuje odkazy na články, které ukazují, jak použít diagnostiku grafické zaznamenávání informací o grafiku a Diagnostika běžné problémy s vykreslováním.

Ladění aplikace Visual Studio

Zavádí funkci ladění v Visual Studio.

Grafické rozhraní DirectX a hry

Obsahuje odkazy na články, které popisují rozhraní DirectX grafické technologie.