Megosztás a következőn keresztül:


A Direct3D9 és a WPF együttműködés teljesítményével kapcsolatos szempontok

A Direct3D9-tartalmakat az D3DImage osztály használatával tárolhatja. A Direct3D9-tartalmak üzemeltetése befolyásolhatja az alkalmazás teljesítményét. Ez a témakör a Teljesítmény optimalizálásának ajánlott eljárásait ismerteti, ha Direct3D9-tartalmakat üzemeltet egy Windows Presentation Foundation (WPF) alkalmazásban. Ezek az ajánlott eljárások közé tartozik, hogyan kell használni a D3DImage, valamint az ajánlott eljárások a Windows Vista, a Windows XP és a többmonitoros kijelzők használatakor.

Megjegyzés:

Az ajánlott eljárásokat bemutató kód példákért lásd: WPF és Direct3D9 Interoperation.

Használja takarékosan a D3DImage-t

A D3DImage példányban üzemeltetett Direct3D9-tartalom nem jelenik meg olyan gyorsan, mint egy tiszta Direct3D-alkalmazásban. A felület másolása és a parancspuffer kiürítése költséges művelet lehet. Ahogy a D3DImage példányok száma növekszik, egyre több kiürítési művelet történik, és a teljesítmény romlik. Ezért takarékosan kell használnia D3DImage .

Ajánlott eljárások Windows Vista rendszeren

A legjobb teljesítmény elérése érdekében a Windows Vista rendszeren, egy Windows Display Driver Model (WDDM) használatára konfigurált kijelző esetén hozza létre a Direct3D9-felületet egy IDirect3DDevice9Ex eszközön. Ez lehetővé teszi a felület megosztását. A videokártyának támogatnia kell a Windows Vista és az D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURESD3DCAPS2_CANSHARERESOURCE illesztőprogram képességeit. Minden más beállítás miatt a felület szoftveren keresztül másolódik, ami jelentősen csökkenti a teljesítményt.

Megjegyzés:

Ha a Windows Vista rendelkezik a Windows XP megjelenítési illesztőprogram-modell (XDDM) használatára konfigurált kijelzővel, a rendszer a beállításoktól függetlenül mindig szoftveresen másolja a felületet. A megfelelő beállításokkal és videokártyával jobb teljesítményt fog látni a Windows Vista rendszerben a WDDM használata esetén, mivel a felületi másolatok hardverben vannak végrehajtva.

Ajánlott eljárások Windows XP rendszeren

A Windows XP megjelenítési illesztőprogram-modelljét (XDDM) használó Windows XP esetén a legjobb teljesítmény érdekében hozzon létre egy zárolható felületet, amely megfelelően viselkedik a IDirect3DSurface9::GetDC metódus meghívásakor. A BitBlt módszer belsőleg átviszi a felületet a hardvereszközök között. A GetDC módszer mindig XRGB-felületeken működik. Ha azonban az ügyfélszámítógép SP3 vagy SP2 rendszerű Windows XP rendszert futtat, és az ügyfél rendelkezik a rétegzett ablak funkció gyorsjavításával is, ez a módszer csak ARGB-felületeken működik. A videokártyának támogatnia kell az D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES illesztőprogram-képességet.

A 16 bites asztali megjelenítési mélység jelentősen csökkentheti a teljesítményt. 32 bites asztal használata ajánlott.

Ha Windows Vista és Windows XP rendszeren fejleszt, tesztelje a teljesítményt Windows XP rendszeren. A videómemória elfogyása a Windows XP-ben aggodalomra ad okot. D3DImage Emellett Windows XP rendszeren több videomemóriát és sávszélességet használ, mint a Windows Vista WDDM, a szükséges extra videomemória-másolat miatt. Ezért számíthat arra, hogy a teljesítmény rosszabb lesz a Windows XP-n, mint a Windows Vista-on ugyanazon videohardver esetében.

Megjegyzés:

Az XDDM Windows XP és Windows Vista rendszeren is elérhető; A WDDM azonban csak Windows Vista rendszeren érhető el.

Általános ajánlott eljárások

Az eszköz létrehozásakor használja a létrehozási jelzőt D3DCREATE_MULTITHREADED . Ez csökkenti a teljesítményt, de a WPF renderelő rendszer egy másik szálról hívja meg az eszközön lévő metódusokat. Ügyeljen arra, hogy helyesen kövesse a zárolási protokollt, hogy egyszerre ne férhessen hozzá két szál az eszközhöz.

Ha a renderelés WPF által felügyelt szálon történik, erősen ajánlott létrehozni az eszközt a létrehozási D3DCREATE_FPU_PRESERVE jelzővel. E beállítás nélkül a D3D-renderelés csökkentheti a WPF dupla pontosságú műveleteinek pontosságát, és renderelési problémákat okozhat.

A D3DImage táblázása gyors, kivéve, ha hardvertámogatás nélkül csempéz egy nem kettes hatványa szerinti felületet, vagy ha egy DrawingBrush vagy VisualBrush, ami egy D3DImage-t tartalmaz, kerül burkolásra.

Ajánlott eljárások a többmonitoros kijelzőkhöz

Ha több monitorral rendelkező számítógépet használ, kövesse a korábban ismertetett ajánlott eljárásokat. A többmonitoros konfigurációhoz további teljesítménybeli szempontok is tartoznak.

A háttérpuffer létrehozásakor egy adott eszközön és adapteren jön létre, de a WPF bármilyen adapteren megjelenítheti az első puffert. Az adapterek közötti másolás a frontpuffer frissítéséhez nagyon költséges lehet. Windows Vista rendszeren, amely úgy van konfigurálva, hogy a WDDM-et több videokártyával és egy IDirect3DDevice9Ex eszközzel használja, ha az első puffer egy másik adapteren van, de még mindig ugyanaz a videokártya, nincs teljesítménybeli büntetés. A Windows XP és a több videokártyával rendelkező XDDM esetén azonban jelentős teljesítménybeli büntetés jár, ha az első puffer más adapteren jelenik meg, mint a hátsó puffer. További információ: WPF és Direct3D9 Interoperation.

Teljesítmény összegzése

Az alábbi táblázat az operációs rendszer, a képpontformátum és a felület zárolásának függvényeként mutatja be az első pufferfrissítés teljesítményét. A rendszer feltételezi, hogy az első és a hátsó puffer ugyanazon az adapteren található. Az adapter konfigurációjától függően a hardverfrissítések általában sokkal gyorsabbak, mint a szoftverfrissítések.

Surface pixel formátuma Windows Vista, WDDM és 9Ex Egyéb Windows Vista-konfigurációk Windows XP SP3 vagy SP2 a hotfixszel Windows XP SP2
D3DFMT_X8R8G8B8 (nem zárolható) Hardverfrissítés Szoftverfrissítés Szoftverfrissítés Szoftverfrissítés
D3DFMT_X8R8G8B8 (zárolható) Hardverfrissítés Szoftverfrissítés Hardverfrissítés Hardverfrissítés
D3DFMT_A8R8G8B8 (nem zárolható) Hardverfrissítés Szoftverfrissítés Szoftverfrissítés Szoftverfrissítés
D3DFMT_A8R8G8B8 (zárolható) Hardverfrissítés Szoftverfrissítés Hardverfrissítés Szoftverfrissítés

Lásd még