D3DImage.SetBackBuffer Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 false
wartość 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
lubD3DFMT_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 false
wartość , 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ą backBuffer
null
, 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
lubD3DFMT_X8R8G8B8
D3DUSAGE_RENDERTARGET
D3DPOOL_DEFAULT
Wieloamperowanie jest dozwolone tylko na IDirect3DSurface9Ex
powierzchniach.