D3DImage.SetBackBuffer 메서드

정의

Direct3D 표면을 백 버퍼의 원본으로 할당합니다.

오버로드

Name Description
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 또는 TryLock(Duration) 메서드를 호출하여 잠기 Lock() 지 않았습니다.

backBufferType 유효한 D3DResourceType아닙니다.

만들기 매개 변수 backBuffer 가 -또는 backBuffer 디바이스에 backBufferType대한 요구 사항을 충족하지 않습니다.

예제

다음 코드 예제에서는 Direct3D 화면을 할당 하는 메서드를 호출 SetBackBuffer 하는 방법을 보여 줍니다. `자세한 내용은 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호출하거나 호출 enableSoftwareFallbackSetBackBuffer(D3DResourceType, IntPtr)SetBackBuffer(D3DResourceType, IntPtr, Boolean) 하면 프런트 버퍼를 사용할 수 없게 되고 아무것도 표시되지 않으면 렌더링 시스템에서 백 버퍼에 대한 참조를 해제합니다. 프런트 버퍼가 다시 사용 가능해지면, 렌더링 시스템은 IsFrontBufferAvailableChanged 이벤트를 발생시켜 WPF 애플리케이션에 이를 알립니다. Direct3D 표면을 사용하여 렌더링을 다시 시작할 수 있도록 IsFrontBufferAvailableChanged 이벤트에 대한 이벤트 처리기를 만들 수 있습니다. 렌더링을 다시 시작하려면 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 애플리케이션에 이를 알립니다. Direct3D 표면을 사용하여 렌더링을 다시 시작할 수 있도록 IsFrontBufferAvailableChanged 이벤트에 대한 이벤트 처리기를 만들 수 있습니다. 렌더링을 다시 시작하려면 SetBackBuffer를 호출해야 합니다.

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

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

  • D3DFMT_A8R8G8B8 또는 D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

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

적용 대상