다음을 통해 공유


D3DImage.SetBackBuffer 메서드

정의

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동일합니다. 로 설정된 false매개 변수를 사용하여 enableSoftwareFallback 를 호출하거나 호출 SetBackBuffer(D3DResourceType, IntPtr)SetBackBuffer(D3DResourceType, IntPtr, Boolean) 하면 렌더링 시스템은 전면 버퍼를 사용할 수 없게 되고 아무것도 표시되지 않으면 백 버퍼에 대한 참조를 해제합니다. 프런트 버퍼가 다시 제공 되 면 렌더링 발생을 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) 오버로드를 호출하거나 enableSoftwareFallback 매개 변수가 false로 설정된 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 오버로드를 호출하면 렌더링 시스템은 전면 버퍼를 사용할 수 없게 되고 아무것도 표시되지 않으면 백 버퍼에 대한 참조를 해제합니다. 프런트 버퍼가 다시 제공 되 면 렌더링 발생을 IsFrontBufferAvailableChanged WPF 애플리케이션에 알리는 이벤트입니다. IsFrontBufferAvailableChanged 이벤트에 대한 이벤트 처리기를 만들어 유효한 Direct3D 표면을 사용하여 렌더링을 다시 시작할 수 있습니다. 렌더링을 다시 시작하려면 SetBackBuffer를 호출해야 합니다.

로 설정된 true매개 변수를 사용하여 enableSoftwareFallback 를 호출 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 할 때 렌더링 시스템은 프런트 버퍼를 사용할 수 없게 되면 백 버퍼에 대한 참조를 유지하므로 프런트 버퍼를 다시 사용할 수 있을 때 를 호출 SetBackBuffer 할 필요가 없습니다. 사용자의 디바이스에 사용할 수 없게 되는 상황이 있을 수 있습니다. 이 경우 를 호출 SetBackBuffer 하여 백 버퍼에 대한 WPF의 참조를 해제합니다. 디바이스를 재설정 해야 할 경우 호출 SetBackBuffer 사용 하 여 backBuffer 로 설정 null, 다음 호출 SetBackBuffer 사용 하 여 다시 backBuffer 유효한 Direct3D 화면을로 설정 합니다.

다음 목록에서는 형식에 필요한 백 버퍼 설정을 IDirect3DSurface9 보여줍니다.

  • D3DFMT_A8R8G8B8 또는 D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

다중 샘플링은 표면에서 IDirect3DSurface9Ex 만 허용됩니다.

적용 대상