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
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 false
festgelegt ist. Wenn Sie den enableSoftwareFallback
Parameter auf false
aufrufen 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
oderD3DFMT_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 true
aufrufenSetBackBuffer(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 null
auf 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
oderD3DFMT_X8R8G8B8
D3DUSAGE_RENDERTARGET
D3DPOOL_DEFAULT
Multisampling ist nur auf IDirect3DSurface9Ex
Oberflächen zulässig.