SwapEffect-Enumeration
Assembly: Microsoft.WindowsMobile.DirectX (in microsoft.windowsmobile.directx.dll)
| Membername | Beschreibung | |
|---|---|---|
|
Copy | Dieser Swapeffekt kann für nur eine Swapkette angegeben werden, die aus einem einzelnen Hintergrundpuffer besteht. Unabhängig davon, ob es sich um eine Swapkette im Fenstermodus oder im Vollbildmodus handelt, gewährleistet die Laufzeit die einem kopiebasierten Present-Vorgang zugrunde liegende Semantik eines Device. Insbesondere wird sichergestellt, dass der Inhalt des Hintergrundpuffers unverändert bleibt und er nicht durch den Inhalt des Frontpuffers ersetzt wird, wie es bei einem austauschbasierten Present-Vorgang der Fall wäre. Bei einer Swapkette im Fenstermodus kopiert der Present-Vorgang den Inhalt des Hintergrundpuffers sofort in den Clientbereich des Zielfensters. Es wird nicht nicht versucht, das Kopieren mit der vertikalen Rücklaufdauer des Anzeigeadapters zu synchronisieren. Daher können u. U. Zerreißeffekte auftreten. Bei einer Swapkette im Vollbildmodus verwendet die Laufzeit eine Kombination aus Austausch- und Kopiervorgängen (die bei Bedarf durch verborgene Hintergrundpuffer unterstützt werden), um den Present-Vorgang auszuführen. Die Präsentation wird daher mit der vertikalen Rücklaufdauer des Anzeigeadapters synchronisiert, und die entsprechende Rate wird durch das ausgewählte Präsentationsintervall beschränkt. |
|
CopyVSync | Das Verhalten dieses Swapeffekts gleicht fast vollständig demjenigen des Copy-Swapeffekts. Der einzige Unterschied besteht darin, dass das Kopieren mit der vertikalen Rücklaufdauer des Bildschirms synchronisiert wird, um Zerreißartefakte zu beseitigen. |
|
Discard | Wenn eine Swapkette mit einem Swapeffekt von Flip oder Copy erstellt wird, stellt die Laufzeit sicher, dass ein Present-Vorgang eines Device keine Auswirkungen auf den Inhalt der Hintergrundpuffer hat. Dabei kann jedoch u. U. ein erheblicher Aufwand für den Videospeicher oder die Verarbeitung anfallen, insbesondere dann, wenn für eine Swapkette im Fenstermodus eine Austauschsemantik oder für eine Swapkette im Vollbildmodus eine Kopiersemantik implementiert wird. Eine Anwendung kann den Discard-Swapeffekt verwenden und den Anzeigetreiber aktivieren, um diesen Aufwand zu vermeiden und die effizienteste Präsentationstechnik für die Swapkette auszuwählen. Discard ist auch der einzige Swapeffekt, der verwendet werden kann, wenn Sie einen anderen Wert als None für MultiSampleType angeben. Wie eine Swapkette, die Flip verwendet, kann auch eine Swapkette, die Discard verwendet, möglicherweise mehrere Hintergrundpuffer enthalten. Auf diese kann jeweils mithilfe von Device.GetBackBuffer oder SwapChain.GetBackBuffer zugegriffen werden. Die Swapkette ist im Wesentlichen eine Warteschlange, wobei 0 (null) immer den Hintergrundpuffer indiziert, der vom nächsten Device.Present-Vorgang angezeigt wird. Die Puffer in der Warteschlange werden unmittelbar nach der Anzeige verworfen. Eine Anwendung, die diesen Swapeffekt verwendet, muss einen vollständigen Hintergrundpuffer aktualisieren, bevor ein Device.Present-Vorgang zum Anzeigen aufgerufen wird. Die Debugversion der Laufzeit überschreibt den Inhalt der verworfenen Hintergrundpuffer mit zufälligen Daten, damit Entwickler überprüfen können, ob ihre Anwendungen die gesamte Hintergrundpufferoberfläche ordnungsgemäß aktualisieren. Bei einer Swapkette im Vollbildmodus wird die Präsentationsrate durch den Wert bestimmt, der beim Erstellen des Geräts oder der Swapkette den Caps.PresentationIntervals zugewiesen wurde. Sofern dieser Wert nicht Immediate ist, erfolgt die Synchronisierung der Präsentation anhand der vertikalen Synchronisierung des Bildschirms. Bei einer Swapkette im Fenstermodus wird die Präsentation immer sofort mit Kopiervorgängen implementiert. |
|
Flip | Die Swapkette enthält möglicherweise mehrere Hintergrundpuffer und stellt im Wesentlichen eine zirkuläre Warteschlange dar, die den Frontpuffer einschließt. Innerhalb dieser Warteschlange werden die Hintergrundpuffer stets fortlaufend von 0 (null) bis (n - 1) nummeriert, wobei n die Anzahl der Hintergrundpuffer darstellt und 0 (null) den zuletzt präsentierten Puffer bezeichnet. Beim Aufruf von Device.Present wird die Warteschlange so gedreht, dass der Frontpuffer zum Hintergrundpuffer (n - 1) wird und der Hintergrundpuffer 0 (null) zum neuen Frontpuffer wird. Bei einer Swapkette im Vollbildmodus wird die Präsentationsrate durch den Wert bestimmt, der beim Erstellen des Geräts oder der Swapkette den Caps.PresentationIntervals zugewiesen wurde. Bei einer Swapkette im Fenstermodus wird das Austauschen mithilfe von Kopiervorgängen implementiert, und die Präsentation erfolgt immer sofort. |
Der Zustand des Hintergrundpuffers nach einem Aufruf der Present-Methode eines Device wird von jedem dieser Swapeffekte genau definiert. Ob das Microsoft Direct3D-Gerät mit einer Swapkette im Vollbildmodus oder einer Swapkette im Fenstermodus erstellt wurde, ist für diesen Zustand unerheblich. Insbesondere funktionieren die Flip-Swapeffekte im Fenstermodus und im Vollbildmodus gleich. Dies wird von der Direct3D-Laufzeit durch Erstellen zusätzlicher Puffer sichergestellt. Es wird daher empfohlen, dass in den Anwendungen möglichst immer Discard verwendet wird, um Leistungseinbußen zu vermeiden, denn der aktuelle Swapeffekt ist hinsichtlich Speicherbedarf und Leistung immer am effizientesten.
Ein Alpha für Ziele im Vollbildmodus funktioniert nicht bei Anwendungen, die Flip oder Discard verwenden. Das heißt, DestinationBlend eines RenderStateManager funktioniert nicht wie erwartet, weil die Vollbildmodus-Swapketten mit diesen Swapeffekten aus der Sicht des Treibers kein explizites Pixelformat haben. Der Treiber schließt daraus, dass er das Anzeigeformat annehmen muss, das keinen Alphakanal aufweist.
Windows CE, Windows Mobile für Pocket PC, Windows Mobile für Smartphone
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.