Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Direct3D9-Inhalte mithilfe der D3DImage Klasse hosten. Das Hosten von Direct3D9-Inhalten kann sich auf die Leistung Ihrer Anwendung auswirken. In diesem Thema werden bewährte Methoden beschrieben, um die Leistung beim Hosten von Direct3D9-Inhalten in einer WPF-Anwendung (Windows Presentation Foundation) zu optimieren. Diese Best Practices umfassen die Verwendung von D3DImage sowie Best Practices für die Verwendung von Windows Vista-, Windows XP- und Multimonitoranzeigen.
Hinweis
Codebeispiele, die diese bewährten Methoden veranschaulichen, finden Sie unter WPF- und Direct3D9-Interoperation.
Sparsames Verwenden von D3DImage
Direct3D9-Inhalte, die in einer D3DImage Instanz gehostet werden, werden nicht so schnell wie in einer reinen Direct3D-Anwendung gerendert. Das Kopieren der Oberfläche und das Leeren des Befehlspuffers kann kostspielige Vorgänge sein. Wenn sich die Anzahl der D3DImage-Instanzen erhöht, erfolgen häufigere Leerungen, und die Leistung wird beeinträchtigt. Daher sollten Sie D3DImage sparsam verwenden.
Bewährte Methoden unter Windows Vista
Um die beste Leistung unter Windows Vista mit einer Anzeige zu erzielen, die für das Windows Display Driver Model (WDDM) konfiguriert ist, erstellen Sie Ihre Direct3D9-Oberfläche auf einem IDirect3DDevice9Ex-Gerät. Dies ermöglicht die Oberflächenfreigabe. Die Grafikkarte muss die D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES- und D3DCAPS2_CANSHARERESOURCE-Treiberfunktionen unter Windows Vista unterstützen. Alle anderen Einstellungen führen dazu, dass die Oberfläche durch Software kopiert wird, wodurch die Leistung erheblich reduziert wird.
Hinweis
Wenn Windows Vista über eine Anzeige verfügt, die für die Verwendung des Windows XP-Bildschirmtreibermodells (XDDM) konfiguriert ist, wird die Oberfläche unabhängig von den Einstellungen immer über die Software kopiert. Mit den richtigen Einstellungen und Grafikkarten sehen Sie eine bessere Leistung unter Windows Vista, wenn Sie den WDDM verwenden, da Oberflächenkopien in der Hardware ausgeführt werden.
Bewährte Methoden unter Windows XP
Um eine optimale Leistung unter Windows XP zu erzielen, das das Windows XP Display Driver Model (XDDM) verwendet, erstellen Sie eine sperrbare Oberfläche, die sich ordnungsgemäß verhält, wenn die Methode IDirect3DSurface9::GetDC aufgerufen wird. Intern überträgt die BitBlt-Methode die Oberfläche geräteübergreifend in der Hardware. Die GetDC-Methode funktioniert immer auf XRGB-Oberflächen. Wenn auf dem Clientcomputer jedoch Windows XP mit SP3 oder SP2 ausgeführt wird und der Client auch über den Hotfix für das Feature "Mehrschichtfenster" verfügt, funktioniert diese Methode nur auf ARGB-Oberflächen. Die Grafikkarte muss die D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES-Treiberfunktionalität unterstützen.
Eine 16-Bit-Desktopanzeigetiefe kann die Leistung erheblich reduzieren. Es wird ein 32-Bit-Desktop empfohlen.
Wenn Sie für Windows Vista und Windows XP entwickeln, testen Sie die Leistung unter Windows XP. Es kann durchaus sein, dass der Grafikspeicher unter Windows XP nicht ausreicht. Darüber hinaus verwendet D3DImage unter Windows XP aufgrund einer erforderlichen zusätzlichen Videospeicherkopie mehr Videospeicher und Bandbreite als Windows Vista WDDM. Daher können Sie davon ausgehen, dass die Leistung unter Windows XP schlechter ist als unter Windows Vista für die gleiche Videohardware.
Hinweis
XDDM ist sowohl unter Windows XP als auch unter Windows Vista verfügbar; WDDM ist jedoch nur unter Windows Vista verfügbar.
Allgemeine bewährte Methoden
Wenn Sie das Gerät erstellen, verwenden Sie das D3DCREATE_MULTITHREADED-Erstellungsflag. Dies verringert die Leistung, aber das WPF-Renderingsystem ruft Methoden auf diesem Gerät von einem anderen Thread auf. Achten Sie darauf, das Sperrprotokoll ordnungsgemäß zu befolgen, damit keine zwei Threads gleichzeitig auf das Gerät zugreifen.
Wenn das Rendern auf einem verwalteten WPF-Thread ausgeführt wird, wird dringend empfohlen, das Gerät mit dem D3DCREATE_FPU_PRESERVE-Erstellungsflag zu erstellen. Ohne diese Einstellung kann das D3D-Rendering die Genauigkeit von doppelt so genauen WPF-Vorgängen verringern und Renderingprobleme einführen.
Das Kacheln einer D3DImage-Datei ist schnell, es sei denn, Sie kacheln eine Nicht-Pow2-Oberfläche ohne Hardwareunterstützung oder eine Kachel oder ein DrawingBrush- oder VisualBrush-Element, das D3DImage enthält.
Bewährte Methoden für Displays mit mehreren Monitoren
Wenn Sie einen Computer mit mehreren Monitoren verwenden, sollten Sie die zuvor beschriebenen bewährten Methoden befolgen. Es gibt auch einige zusätzliche Leistungsaspekte für eine Konfiguration mit mehreren Monitoren.
Wenn Sie den Hintergrundpuffer erstellen, wird er auf einem bestimmten Gerät und Adapter erstellt, aber WPF kann den Frontpuffer auf jedem Adapter anzeigen. Das adapterübergreifende Kopieren, um den Frontpuffer zu aktualisieren, kann sehr teuer sein. Unter Windows Vista, das für die Verwendung des WDDM mit mehreren Grafikkarten und mit einem IDirect3DDevice9Ex-Gerät konfiguriert ist, gibt es keine Leistungseinschränkung, wenn sich der Frontpuffer auf einem anderen Adapter, aber immer noch derselben Grafikkarte befindet. Unter Windows XP und dem XDDM mit mehreren Grafikkarten gibt es jedoch eine erhebliche Leistungseinbuße, wenn der Frontpuffer auf einem anderen Adapter als der Rückpuffer angezeigt wird. Weitere Informationen finden Sie unter Interaktion zwischen WPF und Direct3D9.
Leistungszusammenfassung
Die folgende Tabelle zeigt die Leistung des Frontpufferupdates als Funktion des Betriebssystems, des Pixelformats und der Sperrbarkeit der Oberfläche. Es wird davon ausgegangen, dass sich der Frontpuffer und der Hintergrundpuffer auf demselben Adapter befinden. Je nach Adapterkonfiguration sind Hardwareupdates im Allgemeinen viel schneller als Softwareupdates.
| Oberflächenpixelformat | Windows Vista, WDDM und 9Ex | Andere Windows Vista-Konfigurationen | Windows XP SP3 oder SP2 mit Hotfix | Windows XP SP2 |
|---|---|---|---|---|
| D3DFMT_X8R8G8B8 (nicht sperrbar) | Hardwareupdate | Softwareupdate | Softwareupdate | Softwareupdate |
| D3DFMT_X8R8G8B8 (sperrbar) | Hardwareupdate | Softwareupdate | Hardwareupdate | Hardwareupdate |
| D3DFMT_A8R8G8B8 (nicht sperrbar) | Hardwareupdate | Softwareupdate | Softwareupdate | Softwareupdate |
| D3DFMT_A8R8G8B8 (sperrbar) | Hardwareupdate | Softwareupdate | Hardwareupdate | Softwareupdate |
Siehe auch
.NET Desktop feedback