Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt Direct3D9-inhoud hosten met behulp van de D3DImage klasse. Het hosten van Direct3D9-inhoud kan van invloed zijn op de prestaties van uw toepassing. In dit onderwerp worden aanbevolen procedures beschreven voor het optimaliseren van prestaties bij het hosten van Direct3D9-inhoud in een WPF-toepassing (Windows Presentation Foundation). Deze aanbevolen procedures omvatten het gebruik D3DImage en de aanbevolen procedures wanneer u Windows Vista, Windows XP en beeldschermen met meerdere beeldschermen gebruikt.
Opmerking
Zie WPF en Direct3D9 Interoperation voor codevoorbeelden die deze aanbevolen procedures demonstreren.
D3DImage Sparingly gebruiken
Direct3D9-inhoud die in een D3DImage exemplaar wordt gehost, wordt niet zo snel weergegeven als in een pure Direct3D-toepassing. Het kopiëren van het oppervlak en het leegmaken van de opdrachtbuffer kan kostbare bewerkingen zijn. Naarmate het aantal D3DImage exemplaren toeneemt, treden er meer leegmaken en verslechtert de prestaties. Daarom moet u spaarzaam gebruiken D3DImage .
Aanbevolen procedures voor Windows Vista
Voor de beste prestaties op Windows Vista met een beeldscherm dat is geconfigureerd voor het gebruik van het Windows Display Driver Model (WDDM), maakt u uw Direct3D9-oppervlak op een IDirect3DDevice9Ex apparaat. Dit maakt het delen van surface mogelijk. De videokaart moet de D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES mogelijkheden en D3DCAPS2_CANSHARERESOURCE stuurprogramma's op Windows Vista ondersteunen. Andere instellingen zorgen ervoor dat het oppervlak wordt gekopieerd via software, wat de prestaties aanzienlijk vermindert.
Opmerking
Als Windows Vista een beeldscherm heeft dat is geconfigureerd voor het gebruik van het Windows XP Display Driver Model (XDDM), wordt het oppervlak altijd gekopieerd via software, ongeacht de instellingen. Met de juiste instellingen en videokaart ziet u betere prestaties op Windows Vista wanneer u de WDDM gebruikt, omdat surface-kopieën worden uitgevoerd in hardware.
Aanbevolen procedures voor Windows XP
Voor de beste prestaties in Windows XP, die gebruikmaakt van het Windows XP Display Driver Model (XDDM), maakt u een vergrendelbaar oppervlak dat correct werkt wanneer de IDirect3DSurface9::GetDC methode wordt aangeroepen. Intern draagt de BitBlt methode het oppervlak over op apparaten in hardware. De GetDC methode werkt altijd op XRGB-oppervlakken. Als op de clientcomputer Echter Windows XP met SP3 of SP2 wordt uitgevoerd en als de client ook de hotfix voor de functie gelaagd venster heeft, werkt deze methode alleen op ARGB-oppervlakken. De videokaart moet de mogelijkheid van het D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES stuurprogramma ondersteunen.
Een 16-bits bureaubladweergavediepte kan de prestaties aanzienlijk verminderen. Een 32-bits bureaublad wordt aanbevolen.
Als u ontwikkelt voor Windows Vista en Windows XP, test u de prestaties op Windows XP. Onvoldoende videogeheugen in Windows XP is een probleem. Bovendien D3DImage gebruikt Windows XP meer videogeheugen en bandbreedte dan Windows Vista WDDM, vanwege een noodzakelijke extra videogeheugenkopie. Daarom kunt u verwachten dat prestaties slechter zijn op Windows XP dan op Windows Vista voor dezelfde videohardware.
Opmerking
XDDM is beschikbaar op zowel Windows XP als Windows Vista; WDDM is echter alleen beschikbaar op Windows Vista.
Algemene aanbevolen procedures
Wanneer u het apparaat maakt, gebruikt u de D3DCREATE_MULTITHREADED creatievlag. Dit vermindert de prestaties, maar het WPF-renderingsysteem roept methoden op dit apparaat aan vanuit een andere thread. Zorg ervoor dat u het vergrendelingsprotocol correct volgt, zodat er geen twee threads tegelijkertijd toegang hebben tot het apparaat.
Als uw rendering wordt uitgevoerd op een door WPF beheerde thread, wordt het sterk aangeraden om het apparaat te creëren met de D3DCREATE_FPU_PRESERVE creatie-vlag. Zonder deze instelling kan de D3D-rendering de nauwkeurigheid van WPF-bewerkingen met dubbele precisie verminderen en renderingproblemen veroorzaken.
Het tegelen van een D3DImage is snel, tenzij u een niet-pow2-oppervlak zonder hardwareondersteuning tegelt, of als u een DrawingBrush of VisualBrush tegelt die een D3DImage bevat.
Aanbevolen procedures voor meerdere monitoren
Als u een computer met meerdere beeldschermen gebruikt, moet u de eerder beschreven aanbevolen procedures volgen. Er zijn ook enkele aanvullende prestatieoverwegingen voor een configuratie met meerdere beeldschermen.
Wanneer u de achterbuffer maakt, wordt deze gemaakt op een specifiek apparaat en een specifieke adapter, maar WPF kan de frontbuffer op elke adapter weergeven. Kopiëren tussen adapters om de frontbuffer bij te werken kan erg duur zijn. Op Windows Vista die is geconfigureerd voor het gebruik van WDDM met meerdere videokaarten en met een IDirect3DDevice9Ex apparaat, als de frontbuffer zich op een andere adapter bevindt, maar nog steeds dezelfde videokaart, is er geen prestatiestraf. In Windows XP en XDDM met meerdere videokaarten is er echter een aanzienlijke prestatiestraf wanneer de voorbuffer wordt weergegeven op een andere adapter dan de achterbuffer. Zie WPF en Direct3D9 Interoperation voor meer informatie.
Prestatieoverzicht
In de volgende tabel ziet u de prestaties van de frontbufferupdate als een functie van besturingssysteem, pixelindeling en oppervlaktevergrendeling. De voorbuffer en de achterbuffer worden verondersteld op dezelfde adapter te staan. Afhankelijk van de adapterconfiguratie zijn hardware-updates over het algemeen veel sneller dan software-updates.
| Pixelopmaak voor oppervlak | Windows Vista, WDDM en 9Ex | Andere Windows Vista-configuraties | Windows XP SP3 of SP2 met hotfix | Windows XP SP2 |
|---|---|---|---|---|
| D3DFMT_X8R8G8B8 (niet vergrendelbaar) | Hardware-update | Software-update | Software-update | Software-update |
| D3DFMT_X8R8G8B8 (afsluitbaar) | Hardware-update | Software-update | Hardware-update | Hardware-update |
| D3DFMT_A8R8G8B8 (niet vergrendelbaar) | Hardware-update | Software-update | Software-update | Software-update |
| D3DFMT_A8R8G8B8 (afsluitbaar) | Hardware-update | Software-update | Hardware-update | Software-update |
Zie ook
.NET Desktop feedback