Udostępnij za pośrednictwem


D3DImage.SetBackBuffer Metoda

Definicja

Przypisuje powierzchnię Direct3D jako źródło bufora wstecznego.

Przeciążenia

SetBackBuffer(D3DResourceType, IntPtr)

Przypisuje powierzchnię Direct3D jako źródło bufora wstecznego.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Przypisuje powierzchnię Direct3D jako źródło bufora wstecznego.

SetBackBuffer(D3DResourceType, IntPtr)

Przypisuje powierzchnię Direct3D jako źródło bufora wstecznego.

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)

Parametry

backBufferType
D3DResourceType

Typ powierzchni Direct3D. Musi być prawidłowym D3DResourceTypeelementem .

backBuffer
IntPtr

nativeint

Powierzchnia Direct3D, która ma zostać przypisana jako bufor wsteczny.

Atrybuty

Wyjątki

Obiekt D3DImage nie został zablokowany przez wywołanie Lock() metody lub TryLock(Duration) .

backBufferType element nie jest prawidłowym D3DResourceTypeelementem .

Parametry tworzenia dla backBuffer parametrów nie spełniają wymagań dla backBufferType-or-Urządzenie backBuffer jest nieprawidłowe.

Przykłady

Poniższy przykład kodu pokazuje, jak wywołać metodę w SetBackBuffer celu przypisania powierzchni Direct3D. Aby uzyskać więcej informacji, zobacz Przewodnik: hostowanie zawartości Direct3D9 w WPF.

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

Uwagi

Wywołaj metodę , SetBackBuffer aby przypisać powierzchnię Direct3D do buforu wstecznego.

Uwaga

Wydajność zależy znacznie od ustawień powierzchni Direct3D. Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące wydajności dla współdziałania Direct3D9 i WPF.

SetBackBuffer(D3DResourceType, IntPtr) Wywoływanie przeciążenia jest identyczne z wywołaniem SetBackBuffer(D3DResourceType, IntPtr, Boolean) przeciążenia z parametrem ustawionym enableSoftwareFallback na false. Podczas wywoływania lub wywoływania SetBackBuffer(D3DResourceType, IntPtr)SetBackBuffer(D3DResourceType, IntPtr, Boolean) z parametrem ustawionym enableSoftwareFallback na falsewartość system renderowania zwalnia odwołanie do bufora wstecznego, gdy bufor frontu staje się niedostępny i nic nie jest wyświetlane. Gdy bufor frontu jest ponownie dostępny, system renderowania zgłasza IsFrontBufferAvailableChanged zdarzenie, aby powiadomić aplikację WPF. Można utworzyć program obsługi zdarzeń dla IsFrontBufferAvailableChanged zdarzenia, aby ponownie uruchomić renderowanie z prawidłową powierzchnią Direct3D. Aby ponownie uruchomić renderowanie, należy wywołać metodę SetBackBuffer.

Na poniższej liście przedstawiono wymagane ustawienia bufora wstecznego IDirect3DSurface9 dla typu.

  • D3DFMT_A8R8G8B8 lub D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Wieloamperowanie jest dozwolone tylko na IDirect3DSurface9Ex powierzchniach.

Zobacz też

Dotyczy

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Przypisuje powierzchnię Direct3D jako źródło bufora wstecznego.

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)

Parametry

backBufferType
D3DResourceType

Typ powierzchni Direct3D. Musi być prawidłowym D3DResourceTypeelementem .

backBuffer
IntPtr

nativeint

Powierzchnia Direct3D, która ma zostać przypisana jako bufor wsteczny.

enableSoftwareFallback
Boolean

true do powrotu do renderowania oprogramowania; w przeciwnym razie , false.

Atrybuty

Uwagi

Gdy wywołasz SetBackBuffer(D3DResourceType, IntPtr) przeciążenie lub wywołasz SetBackBuffer(D3DResourceType, IntPtr, Boolean) przeciążenie z parametrem ustawionym enableSoftwareFallback na falsewartość , system renderowania zwalnia odwołanie do bufora wstecznego, gdy bufor frontu staje się niedostępny i nic nie jest wyświetlane. Gdy bufor frontu jest ponownie dostępny, system renderowania zgłasza IsFrontBufferAvailableChanged zdarzenie, aby powiadomić aplikację WPF. Można utworzyć program obsługi zdarzeń dla IsFrontBufferAvailableChanged zdarzenia, aby ponownie uruchomić renderowanie z prawidłową powierzchnią Direct3D. Aby ponownie uruchomić renderowanie, należy wywołać metodę SetBackBuffer.

Gdy wywołasz SetBackBuffer(D3DResourceType, IntPtr, Boolean) metodę z parametrem ustawionym enableSoftwareFallback na true, system renderowania zachowuje odwołanie do bufora wstecznego, gdy bufor frontu staje się niedostępny, więc nie ma potrzeby wywoływania SetBackBuffer , gdy bufor frontu jest ponownie dostępny. Mogą wystąpić sytuacje, w których urządzenie użytkownika staje się niedostępne. W takim przypadku wywołaj metodę SetBackBuffer , aby zwolnić odwołanie WPF do buforu wstecznego. Jeśli musisz zresetować urządzenie, wywołaj metodę SetBackBuffer z ustawioną wartością backBuffernull, a następnie ponownie wywołaj SetBackBuffer metodę z backBuffer ustawioną prawidłową powierzchnią Direct3D.

Na poniższej liście przedstawiono wymagane ustawienia bufora wstecznego IDirect3DSurface9 dla typu.

  • D3DFMT_A8R8G8B8 lub D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Wieloamperowanie jest dozwolone tylko na IDirect3DSurface9Ex powierzchniach.

Dotyczy