다음을 통해 공유


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

설명

잠금 수가 0에 D3DImage 도달하면 잠금이 D3DImage 완전히 해제됩니다. D3DImage 이미지가 메서드에 대한 이전 호출로 지정된 영역을 변경한 경우 렌더링을 위해 AddDirtyRect 표시됩니다.

변경 내용이 커밋되고 렌더링이 발생하면 렌더링 스레드가 백 버퍼의 내용을 전면 버퍼에 복사할 때까지 메서드 블록에 대한 추가 호출 Lock 이 발생합니다. 이 동기화는 찢어짐과 같은 표시 아티팩트가 방지됩니다.

참고

잠금이 해제된 동안 D3DImage 에는 Direct3D 화면을 업데이트하지 마세요.

적용 대상

추가 정보