共用方式為


D3DImage.SetBackBuffer 方法

定義

指派 Direct3D 介面做為背景緩衝區的來源。

多載

SetBackBuffer(D3DResourceType, IntPtr)

指派 Direct3D 介面做為背景緩衝區的來源。

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

指派 Direct3D 介面做為背景緩衝區的來源。

SetBackBuffer(D3DResourceType, IntPtr)

指派 Direct3D 介面做為背景緩衝區的來源。

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)

參數

backBufferType
D3DResourceType

Direct3D 介面的型別。 必須是有效的 D3DResourceType

backBuffer
IntPtr

nativeint

指派要做為背景緩衝區的 Direct3D 介面。

屬性

例外狀況

backBufferType 不是有效的 D3DResourceType

backBuffer 的建立參數不符合 backBufferType 的需求,或 backBuffer 裝置無效。

範例

下列程式碼範例示範如何呼叫 SetBackBuffer 方法來指派 Direct3D 介面。 如需詳細資訊,請參閱 逐步解說:在 WPF 中裝載 Direct3D9 內容

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();

備註

SetBackBuffer呼叫 方法,將 Direct3D 表面指派給背景緩衝區。

注意

效能取決於 Direct3D 介面的設定。 如需詳細資訊,請參閱 Direct3D9 和 WPF 互通性的效能考慮

SetBackBuffer(D3DResourceType, IntPtr)呼叫多載與呼叫多載相同, SetBackBuffer(D3DResourceType, IntPtr, Boolean)enableSoftwareFallback 參數設定為 false 。 當您呼叫 SetBackBuffer(D3DResourceType, IntPtr) 或呼叫 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 參數 enableSoftwareFallback 設為 false 時,轉譯系統會在前端緩衝區變成無法使用且不會顯示任何內容時,釋放其後端緩衝區的參考。 當前端緩衝區再次可供使用時,轉譯系統會 IsFrontBufferAvailableChanged 引發 事件來通知 WPF 應用程式。 您可以為事件建立事件處理常式, IsFrontBufferAvailableChanged 以使用有效的 Direct3D 表面重新開機轉譯。 若要重新開機轉譯,您必須呼叫 SetBackBuffer

下列清單顯示類型所需的背景緩衝區設定 IDirect3DSurface9

  • D3DFMT_A8R8G8B8D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

只有表面才 IDirect3DSurface9Ex 允許多重取樣。

另請參閱

適用於

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

指派 Direct3D 介面做為背景緩衝區的來源。

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)

參數

backBufferType
D3DResourceType

Direct3D 介面的型別。 必須是有效的 D3DResourceType

backBuffer
IntPtr

nativeint

指派要做為背景緩衝區的 Direct3D 介面。

enableSoftwareFallback
Boolean

true 表示要回到軟體轉譯,否則為 false

屬性

備註

當您呼叫 SetBackBuffer(D3DResourceType, IntPtr) 多載或呼叫 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 參數設定 false 為 的多載 enableSoftwareFallback 時,轉譯系統會在前端緩衝區變成無法使用且不會顯示任何內容時,釋放其後端緩衝區的參考。 當前端緩衝區再次可供使用時,轉譯系統會 IsFrontBufferAvailableChanged 引發 事件來通知 WPF 應用程式。 您可以為事件建立事件處理常式, IsFrontBufferAvailableChanged 以使用有效的 Direct3D 表面重新開機轉譯。 若要重新開機轉譯,您必須呼叫 SetBackBuffer

當您呼叫 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 參數 enableSoftwareFallback 設為 true 時,轉譯系統會在前端緩衝區變成無法使用時,保留其後端緩衝區的參考,因此不需要在前端緩衝區再次可用時呼叫 SetBackBuffer 。 在某些情況下,使用者裝置可能會變成無法使用。 發生此情況時,請呼叫 SetBackBuffer 以釋放對後端緩衝區的 WPF 參考。 如果您需要重設裝置,請使用 設定為 null 來呼叫 backBufferSetBackBuffer ,然後再次呼叫 SetBackBufferbackBuffer 並將 設定為有效的 Direct3D 介面。

下列清單顯示類型所需的背景緩衝區設定 IDirect3DSurface9

  • D3DFMT_A8R8G8B8D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

只有表面才 IDirect3DSurface9Ex 允許多重取樣。

適用於