D3DImage.SetBackBuffer メソッド

定義

バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。Assigns a Direct3D surface as the source of the back buffer.

オーバーロード

SetBackBuffer(D3DResourceType, IntPtr)

バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。Assigns a Direct3D surface as the source of the back buffer.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。Assigns a Direct3D surface as the source of the back buffer.

SetBackBuffer(D3DResourceType, IntPtr)

バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。Assigns a Direct3D surface as the source of the back buffer.

public:
 void SetBackBuffer(System::Windows::Interop::D3DResourceType backBufferType, IntPtr backBuffer);
public void SetBackBuffer (System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer);
[System.Security.SecurityCritical]
public void SetBackBuffer (System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer);
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint -> unit
[<System.Security.SecurityCritical>]
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint -> unit
Public Sub SetBackBuffer (backBufferType As D3DResourceType, backBuffer As IntPtr)

パラメーター

backBufferType
D3DResourceType

Direct3D サーフェイスの種類です。The type of Direct3D surface. 有効な D3DResourceType を指定する必要があります。Must be a valid D3DResourceType.

backBuffer
IntPtr

バック バッファーとして割り当てるための Direct3D サーフェイス。The Direct3D surface to assign as the back buffer.

属性

例外

D3DImageLock() メソッドまたは TryLock(Duration) メソッドへの呼び出しにより、ロックされていません。The D3DImage has not been locked by a call to the Lock() or TryLock(Duration) methods.

backBufferType は有効な D3DResourceType ではありません。backBufferType is not a valid D3DResourceType.

backBuffer の作成パラメーターが backBufferType の要求を満たしていない、または backBuffer デバイスが有効ではありません。The creation parameters for backBuffer do not meet the requirements for the backBufferType-or-The backBuffer device is not valid.

次のコード例は、メソッドを呼び出して SetBackBuffer Direct3D サーフェイスを割り当てる方法を示しています。The following code example shows how to call the SetBackBuffer method to assign a Direct3D surface. 詳細については、「チュートリアル:WPF での Direct3D9 コンテンツのホスト」を参照してください。For more information, see Walkthrough: Hosting Direct3D9 Content 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();

注釈

メソッドを呼び出して、 SetBackBuffer バックバッファーに Direct3D サーフェイスを割り当てます。Call the SetBackBuffer method to assign a Direct3D surface to the back buffer.

注意

パフォーマンスは、Direct3D サーフェイスの設定に大きく左右されます。Performance depends greatly on the settings of the Direct3D surface. 詳細については、「Direct3D9 および WPF の相互運用性のパフォーマンスに関する考慮事項」を参照してください。For more information, see Performance Considerations for Direct3D9 and WPF Interoperability.

オーバーロードの呼び出し SetBackBuffer(D3DResourceType, IntPtr) は、 SetBackBuffer(D3DResourceType, IntPtr, Boolean) enableSoftwareFallback パラメーターをに設定してオーバーロードを呼び出すことと同じです falseCalling the SetBackBuffer(D3DResourceType, IntPtr) overload is identical to calling the SetBackBuffer(D3DResourceType, IntPtr, Boolean) overload with the enableSoftwareFallback parameter set to false. SetBackBuffer(D3DResourceType, IntPtr) SetBackBuffer(D3DResourceType, IntPtr, Boolean) パラメーターをに設定してを呼び出すか、を呼び出すと enableSoftwareFallback false 、フロントバッファーが使用できなくなり、何も表示されない場合に、レンダリングシステムによってバックバッファーへの参照が解放されます。When you call SetBackBuffer(D3DResourceType, IntPtr) or call SetBackBuffer(D3DResourceType, IntPtr, Boolean) with the enableSoftwareFallback parameter set to false, the rendering system releases its reference to the back buffer when front buffer becomes unavailable and nothing is displayed. フロント バッファーを再び使用できるようになると、レンダリング システムによって IsFrontBufferAvailableChanged イベントが発生し、WPF アプリケーションに通知されます。When the front buffer is available again, the rendering system raises the IsFrontBufferAvailableChanged event to notify your WPF application. IsFrontBufferAvailableChanged イベントのイベント ハンドラーを作成し、有効な Direct3D サーフェイスを使用してもう一度レンダリングを再開できます。You can create an event handler for the IsFrontBufferAvailableChanged event to restart rendering again with a valid Direct3D surface. レンダリングを再開するには、SetBackBuffer を呼び出す必要があります。To restart rendering, you must call SetBackBuffer.

次の一覧は、型の必要なバックバッファー設定を示して IDirect3DSurface9 います。The following list shows the required back buffer settings for the IDirect3DSurface9 type.

  • D3DFMT_A8R8G8B8 または D3DFMT_X8R8G8B8D3DFMT_A8R8G8B8 or D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

マルチサンプリングは、サーフェイスでのみ許可され IDirect3DSurface9Ex ます。Multisampling is allowed on IDirect3DSurface9Ex surfaces only.

こちらもご覧ください

適用対象

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

バック バッファーのソースとして、Direct3D サーフェイスを割り当てます。Assigns a Direct3D surface as the source of the back buffer.

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]
public void SetBackBuffer (System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint * bool -> unit
[<System.Security.SecurityCritical>]
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 サーフェイスの種類です。The type of Direct3D surface. 有効な D3DResourceType を指定する必要があります。Must be a valid D3DResourceType.

backBuffer
IntPtr

バック バッファーとして割り当てるための Direct3D サーフェイス。The Direct3D surface to assign as the back buffer.

enableSoftwareFallback
Boolean

ソフトウェア レンダリングでフォールバックする場合は true。それ以外の場合は falsetrue to fall back on software rendering; otherwise, false.

属性

注釈

SetBackBuffer(D3DResourceType, IntPtr) オーバーロードを呼び出すか、enableSoftwareFallback パラメーターを false に設定して SetBackBuffer(D3DResourceType, IntPtr, Boolean) オーバーロードを呼び出すと、フロント バッファーが使用できなくなり、何も表示されなくなったときに、レンダリング システムではバック バッファーへの参照が解放されます。When you call the SetBackBuffer(D3DResourceType, IntPtr) overload or call the SetBackBuffer(D3DResourceType, IntPtr, Boolean) overload with the enableSoftwareFallback parameter set to false, the rendering system releases its reference to the back buffer when the front buffer becomes unavailable and nothing is displayed. フロント バッファーを再び使用できるようになると、レンダリング システムによって IsFrontBufferAvailableChanged イベントが発生し、WPF アプリケーションに通知されます。When the front buffer is available again, the rendering system raises the IsFrontBufferAvailableChanged event to notify your WPF application. IsFrontBufferAvailableChanged イベントのイベント ハンドラーを作成し、有効な Direct3D サーフェイスを使用してもう一度レンダリングを再開できます。You can create an event handler for the IsFrontBufferAvailableChanged event to restart rendering again with a valid Direct3D surface. レンダリングを再開するには、SetBackBuffer を呼び出す必要があります。To restart rendering, you must call SetBackBuffer.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)パラメーターをに設定してを呼び出すと enableSoftwareFallback true 、フロントバッファーが使用できなくなったときに、レンダリングシステムによってバックバッファーへの参照が保持されるため、 SetBackBuffer フロントバッファーが再び使用可能になったときにを呼び出す必要はありません。When you call SetBackBuffer(D3DResourceType, IntPtr, Boolean) with the enableSoftwareFallback parameter set to true, the rendering system retains its reference to the back buffer when the front buffer becomes unavailable, so there is no need to call SetBackBuffer when the front buffer is available again. 場合によっては、ユーザーのデバイスが使用できなくなることがあります。There may be situations where the user's device becomes unavailable. この場合は、を呼び出して、 SetBackBuffer バックバッファーへの WPF の参照を解放します。When that occurs, call SetBackBuffer to release WPF's reference to the back buffer. デバイスをリセットする必要がある場合は、をに設定してを呼び出し、を SetBackBuffer backBuffer null SetBackBuffer backBuffer 有効な Direct3D サーフェイスに設定してを呼び出します。If you need to reset your device, call SetBackBuffer with backBuffer set to null, and then call SetBackBuffer again with backBuffer set to a valid Direct3D surface.

次の一覧は、型の必要なバックバッファー設定を示して IDirect3DSurface9 います。The following list shows the required back buffer settings for the IDirect3DSurface9 type.

  • D3DFMT_A8R8G8B8 または D3DFMT_X8R8G8B8D3DFMT_A8R8G8B8 or D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

マルチサンプリングは、サーフェイスでのみ許可され IDirect3DSurface9Ex ます。Multisampling is allowed on IDirect3DSurface9Ex surfaces only.

適用対象