D3DImage.SetBackBuffer Metoda

Definicja

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

Przeciążenia

Nazwa Opis
SetBackBuffer(D3DResourceType, IntPtr)

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

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

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

SetBackBuffer(D3DResourceType, IntPtr)

Przypisuje powierzchnię Direct3D jako źródło buforu 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 nie jest prawidłowym D3DResourceType.

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

Przykłady

W poniższym przykładzie kodu pokazano, jak wywołać metodę SetBackBuffer w 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.

Note

Wydajność zależy znacznie od ustawień powierzchni Direct3D. Aby uzyskać więcej informacji, zobacz zagadnienia wydajności dotyczące 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) za pomocą parametru ustawionego enableSoftwareFallback na falsewartość system renderowania zwalnia odwołanie do buforu wstecznego, gdy bufor frontu staje się niedostępny i nic nie jest wyświetlane. Gdy przedni bufor jest ponownie dostępny, system renderowania generuje zdarzenie IsFrontBufferAvailableChanged, aby powiadomić aplikację WPF. Można utworzyć procedurę obsługi zdarzeń dla zdarzenia IsFrontBufferAvailableChanged, aby ponownie uruchomić renderowanie przy użyciu prawidłowej powierzchni Direct3D. Aby ponownie uruchomić renderowanie, należy wywołać metodę SetBackBuffer.

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

  • D3DFMT_A8R8G8B8 lub D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling jest dozwolony tylko na IDirect3DSurface9Ex powierzchniach.

Zobacz też

Dotyczy

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Przypisuje powierzchnię Direct3D jako źródło buforu 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 aby powrócić do renderowania oprogramowania; w przeciwnym razie, false.

Atrybuty

Uwagi

Po wywołaniu przeciążenia SetBackBuffer(D3DResourceType, IntPtr) lub wywołaniu przeciążenia SetBackBuffer(D3DResourceType, IntPtr, Boolean) z parametrem enableSoftwareFallback ustawionym na false, system renderowania zwalnia odwołanie do buforu wstecznego, gdy bufor frontowy stanie się niedostępny i nic nie jest wyświetlane. Gdy przedni bufor jest ponownie dostępny, system renderowania generuje zdarzenie IsFrontBufferAvailableChanged, aby powiadomić aplikację WPF. Można utworzyć procedurę obsługi zdarzeń dla zdarzenia IsFrontBufferAvailableChanged, aby ponownie uruchomić renderowanie przy użyciu prawidłowej powierzchni Direct3D. Aby ponownie uruchomić renderowanie, należy wywołać metodę SetBackBuffer.

Po wywołaniu SetBackBuffer(D3DResourceType, IntPtr, Boolean) z parametrem ustawionym enableSoftwareFallback na truewartość system renderowania zachowuje odwołanie do buforu wstecznego, gdy bufor frontu stanie 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 stanie się niedostępne. W takim przypadku wywołaj odwołanie SetBackBuffer 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 buforu wstecznego IDirect3DSurface9 dla typu.

  • D3DFMT_A8R8G8B8 lub D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling jest dozwolony tylko na IDirect3DSurface9Ex powierzchniach.

Dotyczy