Sdílet prostřednictvím


Důležité informace o výkonu pro interoperabilitu Direct3D9 a WPF

Obsah Direct3D9 můžete hostovat pomocí třídy D3DImage. Hostování obsahu Direct3D9 může ovlivnit výkon vaší aplikace. Toto téma popisuje osvědčené postupy pro optimalizaci výkonu při hostování obsahu Direct3D9 v aplikaci WINDOWS Presentation Foundation (WPF). Mezi tyto osvědčené postupy patří použití D3DImage a osvědčených postupů při používání displejů se systémem Windows Vista, Windows XP a více monitorů.

Poznámka:

Příklady kódu, které demonstrují tyto osvědčené postupy, najdete v tématu WPF a Direct3D9 Interoperation.

Použití D3DImage střídmě

Obsah Direct3D9 hostovaný v instanci D3DImage se nevykresluje tak rychle jako v čistě direct3D aplikaci. Kopírování povrchu a vyprázdnění vyrovnávací paměti příkazů může být nákladné operace. S rostoucím počtem instancí D3DImage dochází k častějšímu vyprázdnění paměti a snížení výkonu. Proto byste měli používat D3DImage střídmě.

Osvědčené postupy ve Windows Vista

Pro zajištění nejlepšího výkonu v systému Windows Vista s displejem nakonfigurovaným pro použití modelu ovladače zobrazení Windows (WDDM) vytvořte povrch Direct3D9 na zařízení IDirect3DDevice9Ex. To umožňuje sdílení povrchu. Grafická karta musí podporovat možnosti ovladače D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES a D3DCAPS2_CANSHARERESOURCE v systému Windows Vista. Jakékoli další nastavení způsobí, že se povrch zkopíruje prostřednictvím softwaru, což výrazně snižuje výkon.

Poznámka:

Pokud systém Windows Vista má displej nakonfigurovaný tak, aby používal model ovladače zobrazení systému Windows XP (XDDM), povrch se vždy kopíruje prostřednictvím softwaru bez ohledu na nastavení. Se správným nastavením a grafickou kartou uvidíte lepší výkon v systému Windows Vista při použití WDDM, protože kopie povrchu se provádějí v hardwaru.

Osvědčené postupy ve Windows XP

Pro zajištění nejlepšího výkonu v systému Windows XP, který používá model ovladače zobrazení systému Windows XP (XDDM), vytvořte zamknutelnou plochu, která se chová správně při zavolání metody IDirect3DSurface9::GetDC. Interně metoda BitBlt přenáší povrch mezi zařízeními v hardwaru. Metoda GetDC vždy funguje na povrchu XRGB. Pokud však klientský počítač používá systém Windows XP s aktualizací SP3 nebo SP2 a pokud má klient také opravu hotfix pro funkci vrstvené okno, tato metoda funguje pouze na plochách ARGB. Grafická karta musí podporovat schopnost ovladače D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES.

16bitová hloubka barev displeje na pracovní ploše může výrazně snížit výkon. Doporučuje se 32bitový systém.

Pokud vyvíjíte pro systém Windows Vista a Windows XP, otestujte výkon v systému Windows XP. Nedostatek paměti videa v systému Windows XP je problém. Kromě toho D3DImage v systému Windows XP využívá více paměti videa a šířky pásma než windows Vista WDDM, protože je nutné dodatečné kopírování paměti videa. Proto můžete očekávat, že výkon bude horší v systému Windows XP než v systému Windows Vista pro stejný video hardware.

Poznámka:

XDDM je k dispozici v systému Windows XP i Windows Vista; wdDM je však k dispozici pouze v systému Windows Vista.

Obecné osvědčené postupy

Při vytváření zařízení použijte příznak D3DCREATE_MULTITHREADED vytvoření. To snižuje výkon, ale vykreslovací systém WPF volá metody na tomto zařízení z jiného vlákna. Ujistěte se, že se správně řídíte zamykacím protokolem, aby žádná dvě vlákna nepřistupovala k zařízení současně.

Pokud je vaše renderování prováděno ve spravovaném vlákně WPF, důrazně doporučujeme vytvořit zařízení s příznakem vytvoření D3DCREATE_FPU_PRESERVE. Bez tohoto nastavení může vykreslování D3D snížit přesnost operací s dvojitou přesností WPF a zavést problémy s vykreslováním.

Dlaždicování D3DImage je rychlé, pokud nedlaždicujete povrch, který není mocninou dvou a nemá hardwarovou podporu, nebo pokud dlaždicujete DrawingBrush nebo VisualBrush, které obsahují D3DImage.

Osvědčené postupy pro displeje s více monitory

Pokud používáte počítač s více monitory, měli byste postupovat podle výše popsaných osvědčených postupů. Existuje také několik dalších aspektů výkonu konfigurace s více monitory.

Když vytvoříte vyrovnávací paměť zpět, vytvoří se na konkrétním zařízení a adaptéru, ale WPF může zobrazit přední vyrovnávací paměť na jakémkoli adaptéru. Kopírování mezi adaptéry za účelem aktualizace frontové vyrovnávací paměti může být velmi nákladné. V systému Windows Vista, který je nakonfigurován pro použití WDDM s více grafickými kartami a se zařízením IDirect3DDevice9Ex, pokud je přední vyrovnávací paměť na jiném adaptéru stejné grafické karty, nedochází ke zhoršení výkonu. V systémech Windows XP a XDDM s více grafickými kartami dochází k významné penalizaci výkonu, když je přední buffer zobrazen na jiném adaptéru než zadní buffer. Další informace naleznete v tématu WPF a Direct3D9 Interoperation.

Souhrn výkonu

Následující tabulka ukazuje výkon aktualizace front bufferu jako funkci operačního systému, formátu pixelů a zamykatelnosti povrchu. Předpokládá se, že přední vyrovnávací paměť a zadní vyrovnávací paměť jsou na stejném adaptéru. V závislosti na konfiguraci adaptéru jsou aktualizace hardwaru obecně mnohem rychlejší než aktualizace softwaru.

Formát pixelu Surface Windows Vista, WDDM a 9Ex Další konfigurace systému Windows Vista Windows XP SP3 nebo SP2 s opravou hotfix Windows XP SP2
D3DFMT_X8R8G8B8 (nezamknutelné) aktualizace hardwaru Aktualizace softwaru Aktualizace softwaru Aktualizace softwaru
D3DFMT_X8R8G8B8 (zamknutelné) aktualizace hardwaru Aktualizace softwaru aktualizace hardwaru aktualizace hardwaru
D3DFMT_A8R8G8B8 (nelze zamknout) aktualizace hardwaru Aktualizace softwaru Aktualizace softwaru Aktualizace softwaru
D3DFMT_A8R8G8B8 (zamknutelné) aktualizace hardwaru Aktualizace softwaru aktualizace hardwaru Aktualizace softwaru

Viz také