次の方法で共有


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 フロント バッファーにコピーするまで、メソッド ブロックへの追加の呼び出しが行われます。 この同期により、ティアリングなどの表示アーティファクトが回避されます。

注意

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

適用対象

こちらもご覧ください