D3DImage.SetBackBuffer Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu.
Überlädt
| Name | Beschreibung |
|---|---|
| SetBackBuffer(D3DResourceType, IntPtr) |
Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu. |
| SetBackBuffer(D3DResourceType, IntPtr, Boolean) |
Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu. |
SetBackBuffer(D3DResourceType, IntPtr)
Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu.
public:
void SetBackBuffer(System::Windows::Interop::D3DResourceType backBufferType, IntPtr backBuffer);
[System.Security.SecurityCritical]
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer);
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer);
[<System.Security.SecurityCritical>]
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint -> unit
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint -> unit
Public Sub SetBackBuffer (backBufferType As D3DResourceType, backBuffer As IntPtr)
Parameter
- backBufferType
- D3DResourceType
Der Typ der Direct3D-Oberfläche. Muss ein gültiger D3DResourceTypeWert sein.
- backBuffer
-
IntPtr
nativeint
Die Direct3D-Oberfläche, die als Hintergrundpuffer zugewiesen werden soll.
- Attribute
Ausnahmen
Die D3DImage Datei wurde nicht durch einen Aufruf der Lock() Methoden oder TryLock(Duration) Methoden gesperrt.
backBufferType ist keine gültige D3DResourceType.
Die Erstellungsparameter backBuffer erfüllen nicht die Anforderungen für das backBufferType-or-The-Gerät backBuffer ist ungültig.
Beispiele
Das folgende Codebeispiel zeigt, wie die SetBackBuffer Methode aufgerufen wird, um eine Direct3D-Oberfläche zuzuweisen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Hosten von Direct3D9-Inhalten in WPF.
d3dimg.Lock();
// Repeatedly calling SetBackBuffer with the same IntPtr is
// a no-op. There is no performance penalty.
d3dimg.SetBackBuffer(D3DResourceType.IDirect3DSurface9, pSurface);
HRESULT.Check(Render());
d3dimg.AddDirtyRect(new Int32Rect(0, 0, d3dimg.PixelWidth, d3dimg.PixelHeight));
d3dimg.Unlock();
Hinweise
Rufen Sie die SetBackBuffer Methode auf, um dem Hintergrundpuffer eine Direct3D-Oberfläche zuzuweisen.
Note
Die Leistung hängt stark von den Einstellungen der Direct3D-Oberfläche ab. Weitere Informationen finden Sie unter Leistungsüberlegungen für Direct3D9 und WPF-Interoperabilität.
Das Aufrufen der Überladung ist identisch mit dem Aufrufen der SetBackBuffer(D3DResourceType, IntPtr)SetBackBuffer(D3DResourceType, IntPtr, Boolean) Überladung mit dem Parameter, auf den enableSoftwareFallback der Parameter festgelegt ist false. Wenn Sie SetBackBuffer(D3DResourceType, IntPtr) den Parameter aufrufen oder aufrufen SetBackBuffer(D3DResourceType, IntPtr, Boolean) , auf den der enableSoftwareFallback Parameter festgelegt ist false, gibt das Renderingsystem seinen Verweis auf den Hintergrundpuffer frei, wenn der Frontpuffer nicht verfügbar ist und nichts angezeigt wird. Wenn der Frontpuffer wieder verfügbar ist, löst das Renderingsystem das IsFrontBufferAvailableChanged Ereignis aus, um die WPF-Anwendung zu benachrichtigen. Sie können einen Ereignishandler für das IsFrontBufferAvailableChanged Ereignis erstellen, um das Rendering erneut mit einer gültigen Direct3D-Oberfläche neu zu starten. Um das Rendering neu zu starten, müssen Sie aufrufen SetBackBuffer.
In der folgenden Liste sind die erforderlichen Hintergrundpuffereinstellungen für den IDirect3DSurface9 Typ aufgeführt.
D3DFMT_A8R8G8B8oderD3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
Multisampling ist nur auf IDirect3DSurface9Ex Oberflächen zulässig.
Weitere Informationen
Gilt für:
SetBackBuffer(D3DResourceType, IntPtr, Boolean)
Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu.
public:
void SetBackBuffer(System::Windows::Interop::D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
[System.Security.SecurityCritical]
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
[<System.Security.SecurityCritical>]
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint * bool -> unit
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint * bool -> unit
Public Sub SetBackBuffer (backBufferType As D3DResourceType, backBuffer As IntPtr, enableSoftwareFallback As Boolean)
Parameter
- backBufferType
- D3DResourceType
Der Typ der Direct3D-Oberfläche. Muss ein gültiger D3DResourceTypeWert sein.
- backBuffer
-
IntPtr
nativeint
Die Direct3D-Oberfläche, die als Hintergrundpuffer zugewiesen werden soll.
- enableSoftwareFallback
- Boolean
trueum auf das Softwarerendering zurückzugreifen; andernfalls . false
- Attribute
Hinweise
Wenn Sie die SetBackBuffer(D3DResourceType, IntPtr) Überladung aufrufen oder die SetBackBuffer(D3DResourceType, IntPtr, Boolean) Überladung mit dem enableSoftwareFallback Parameter, der auf false festgelegt ist, aufrufen, gibt das Renderingsystem seinen Verweis auf den Backbuffer frei, wenn der Frontbuffer nicht verfügbar ist und nichts angezeigt wird. Wenn der Frontpuffer wieder verfügbar ist, löst das Renderingsystem das IsFrontBufferAvailableChanged Ereignis aus, um die WPF-Anwendung zu benachrichtigen. Sie können einen Ereignishandler für das IsFrontBufferAvailableChanged Ereignis erstellen, um das Rendering erneut mit einer gültigen Direct3D-Oberfläche neu zu starten. Um das Rendering neu zu starten, müssen Sie aufrufen SetBackBuffer.
Wenn Sie den Parameter aufrufenSetBackBuffer(D3DResourceType, IntPtr, Boolean), auf den der Parameter festgelegt trueist, behält das Renderingsystem seinen Verweis auf den Hintergrundpuffer bei, wenn der Frontpuffer nicht mehr verfügbar ist, sodass es nicht mehr erforderlich SetBackBuffer ist, wenn der Frontpuffer wieder verfügbar enableSoftwareFallback ist. Es kann Situationen geben, in denen das Gerät des Benutzers nicht verfügbar ist. Wenn dies geschieht, rufen Sie SetBackBuffer auf, um den Verweis von WPF auf den Hintergrundpuffer freizugeben. Wenn Sie Ihr Gerät zurücksetzen müssen, rufen Sie SetBackBuffer mit backBuffer "Set" nullauf , und rufen Sie SetBackBuffer dann erneut mit backBuffer festgelegter Direct3D-Oberfläche auf.
In der folgenden Liste sind die erforderlichen Hintergrundpuffereinstellungen für den IDirect3DSurface9 Typ aufgeführt.
D3DFMT_A8R8G8B8oderD3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
Multisampling ist nur auf IDirect3DSurface9Ex Oberflächen zulässig.