D3DImage.Unlock メソッド

定義

D3DImageのロック数をデクリメントします。

public:
 void Unlock();
public void Unlock();
member this.Unlock : unit -> unit
Public Sub Unlock ()

次のコード例は、 Unlock メソッドを呼び出して、更新されたバック バッファーをフロント バッファーにコピーする方法を示しています。 詳細については、「チュートリアル: 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();

注釈

D3DImageのロック数が 0 に達すると、D3DImageは完全にロック解除されます。 D3DImageは、AddDirtyRect メソッドの以前の呼び出しで指定された領域がイメージによって変更された場合にレンダリング用にマークされます。

変更がコミットされ、レンダリングが行われると、レンダリング スレッドがバック バッファーの内容をフロント バッファーにコピーするまで、 Lock メソッド ブロックへの追加の呼び出しが行われます。 この同期により、破棄などの表示アーティファクトが回避されます。

Note

D3DImageのロックが解除されている間は Direct3D サーフェスを更新しないでください。

適用対象

こちらもご覧ください