D3DImage.SetBackBuffer 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指派 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 介面。
- 屬性
例外狀況
尚未呼叫 D3DImage 或 Lock() 鎖定 TryLock(Duration)。
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_A8R8G8B8
或D3DFMT_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
來呼叫 backBuffer
SetBackBuffer ,然後再次呼叫 SetBackBuffer , backBuffer
並將 設定為有效的 Direct3D 介面。
下列清單顯示類型所需的背景緩衝區設定 IDirect3DSurface9
。
D3DFMT_A8R8G8B8
或D3DFMT_X8R8G8B8
D3DUSAGE_RENDERTARGET
D3DPOOL_DEFAULT
只有表面才 IDirect3DSurface9Ex
允許多重取樣。