Freigeben über


D3DImage.SetBackBuffer Methode

Definition

Weist eine Direct3D-Oberfläche als Quelle des Hintergrundpuffers zu.

Überlädt

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 D3DResourceType sein.

backBuffer
IntPtr

nativeint

Die Direct3D-Oberfläche, die als Hintergrundpuffer zugewiesen werden soll.

Attribute

Ausnahmen

Das D3DImage wurde nicht durch einen Aufruf der Lock()-Methode oder der TryLock(Duration)-Methode gesperrt.

backBufferType ist kein gültiger D3DResourceType.

Die Erstellungsparameter für backBuffer erfüllen nicht die Anforderungen für backBufferType oder die backBuffer-Einheit ist ungültig.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Sie die SetBackBuffer -Methode aufrufen, um eine Direct3D-Oberfläche zuzuweisen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Hosting 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 Backpuffer eine Direct3D-Oberfläche zuzuweisen.

Hinweis

Die Leistung hängt stark von den Einstellungen der Direct3D-Oberfläche ab. Weitere Informationen finden Sie unter Überlegungen zur Leistung für die Interoperabilität zwischen Direct3D9 und WPF.

Das Aufrufen der SetBackBuffer(D3DResourceType, IntPtr) Überladung ist identisch mit dem Aufrufen der SetBackBuffer(D3DResourceType, IntPtr, Boolean) Überladung, wobei der enableSoftwareFallback Parameter auf falsefestgelegt ist. Wenn Sie den enableSoftwareFallback Parameter auf falseaufrufen SetBackBuffer(D3DResourceType, IntPtr) oder aufrufenSetBackBuffer(D3DResourceType, IntPtr, Boolean), gibt das Renderingsystem seinen Verweis auf den Backpuffer frei, wenn der Frontpuffer nicht mehr verfügbar ist und nichts angezeigt wird. Wenn der Frontpuffer wieder verfügbar ist, löst das Rendering-System das IsFrontBufferAvailableChanged-Ereignis aus, um Ihre WPF-Anwendung zu benachrichtigen. Sie können einen Ereignishandler für das IsFrontBufferAvailableChanged-Ereignis erstellen, um das Rendering mit einer gültigen Direct3D-Oberfläche neu zu starten. Um das Rendering neu zu starten, müssen Sie SetBackBuffer aufrufen.

Die folgende Liste zeigt die erforderlichen Rückpuffereinstellungen für den IDirect3DSurface9 Typ.

  • D3DFMT_A8R8G8B8 oder D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_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 D3DResourceType sein.

backBuffer
IntPtr

nativeint

Die Direct3D-Oberfläche, die als Hintergrundpuffer zugewiesen werden soll.

enableSoftwareFallback
Boolean

true, um auf Softwarerendering zurückzugreifen; andernfalls false.

Attribute

Hinweise

Wenn Sie die SetBackBuffer(D3DResourceType, IntPtr)-Überladung oder die SetBackBuffer(D3DResourceType, IntPtr, Boolean)-Überladung mit einem auf false gesetzten enableSoftwareFallback-Parameter aufrufen, gibt das Rendering-System seinen Verweis auf den Hintergrundpuffer frei, wenn der Frontpuffer nicht mehr verfügbar ist und nichts angezeigt wird. Wenn der Frontpuffer wieder verfügbar ist, löst das Rendering-System das IsFrontBufferAvailableChanged-Ereignis aus, um Ihre WPF-Anwendung zu benachrichtigen. Sie können einen Ereignishandler für das IsFrontBufferAvailableChanged-Ereignis erstellen, um das Rendering mit einer gültigen Direct3D-Oberfläche neu zu starten. Um das Rendering neu zu starten, müssen Sie SetBackBuffer aufrufen.

Wenn Sie den enableSoftwareFallback Parameter auf trueaufrufenSetBackBuffer(D3DResourceType, IntPtr, Boolean), behält das Renderingsystem seinen Verweis auf den Backpuffer bei, wenn der Frontpuffer nicht mehr verfügbar ist, sodass kein Aufruf erforderlich SetBackBuffer ist, wenn der Frontpuffer wieder verfügbar ist. Es kann Situationen geben, in denen das Gerät des Benutzers nicht mehr verfügbar ist. Rufen Sie SetBackBuffer in diesem Fall auf, um den Verweis von WPF auf den Backpuffer freizugeben. Wenn Sie Ihr Gerät zurücksetzen müssen, rufen Sie SetBackBuffer mit backBuffer festgelegt auf nullauf und rufen SetBackBuffer Sie dann erneut auf, indem backBuffer Sie auf eine gültige Direct3D-Oberfläche festgelegt sind.

Die folgende Liste zeigt die erforderlichen Rückpuffereinstellungen für den IDirect3DSurface9 Typ.

  • D3DFMT_A8R8G8B8 oder D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling ist nur auf IDirect3DSurface9Ex Oberflächen zulässig.

Gilt für: