Sdílet prostřednictvím


D3DImage.SetBackBuffer Metoda

Definice

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

Přetížení

SetBackBuffer(D3DResourceType, IntPtr)

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

SetBackBuffer(D3DResourceType, IntPtr)

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

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 povrchu Direct3D. Musí být platný D3DResourceType.

backBuffer
IntPtr

nativeint

Plocha Direct3D, která se má přiřadit jako zadní vyrovnávací paměť.

Atributy

Výjimky

Objekt D3DImage nebyl uzamčen voláním Lock() metody nebo TryLock(Duration) .

backBufferType není platný D3DResourceType.

Parametry vytváření pro backBuffer nesplňují požadavky pro backBufferType-nebo-The backBuffer zařízení není platné.

Příklady

Následující příklad kódu ukazuje, jak volat metodu SetBackBuffer pro přiřazení povrchu Direct3D. Další informace najdete v tématu Návod: Hostování obsahu Direct3D9 ve 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();

Poznámky

Voláním SetBackBuffer metody přiřaďte plochu Direct3D zadní vyrovnávací paměti.

Poznámka

Výkon do značné míry závisí na nastavení povrchu Direct3D. Další informace najdete v tématu Důležité informace o výkonu rozhraní Direct3D9 a interoperability WPF.

SetBackBuffer(D3DResourceType, IntPtr) Volání přetížení je stejné jako volání SetBackBuffer(D3DResourceType, IntPtr, Boolean) přetížení s parametrem nastaveným enableSoftwareFallback na false. Při volání SetBackBuffer(D3DResourceType, IntPtr) nebo volání SetBackBuffer(D3DResourceType, IntPtr, Boolean) s parametrem enableSoftwareFallback nastaveným na false, vykreslovací systém uvolní svůj odkaz na zadní vyrovnávací paměť, když se přední vyrovnávací paměť stane nedostupnou a nezobrazí se nic. Jakmile je přední vyrovnávací paměť opět k dispozici, vykreslovací systém vyvolá IsFrontBufferAvailableChanged událost, která oznámí aplikaci WPF. Můžete vytvořit obslužnou rutinu IsFrontBufferAvailableChanged události, aby se znovu restartovala vykreslování s platnou plochou Direct3D. Pokud chcete znovu spustit vykreslování, musíte volat SetBackBuffer.

V následujícím seznamu jsou uvedena požadovaná nastavení zpětné vyrovnávací paměti pro typ IDirect3DSurface9 .

  • D3DFMT_A8R8G8B8 nebo D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Vícenásobné převzorkování je povoleno pouze na IDirect3DSurface9Ex površích.

Viz také

Platí pro

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Přiřadí plochu Direct3D jako zdroj zadní vyrovnávací paměti.

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 povrchu Direct3D. Musí být platný D3DResourceType.

backBuffer
IntPtr

nativeint

Plocha Direct3D, která se má přiřadit jako zadní vyrovnávací paměť.

enableSoftwareFallback
Boolean

truevrátit se k vykreslování softwaru; v opačném případě . false

Atributy

Poznámky

Když zavoláte SetBackBuffer(D3DResourceType, IntPtr) přetížení nebo zavoláte SetBackBuffer(D3DResourceType, IntPtr, Boolean) přetížení s parametrem enableSoftwareFallback nastaveným na false, vykreslovací systém uvolní svůj odkaz na zadní vyrovnávací paměť, když se přední vyrovnávací paměť stane nedostupnou a nezobrazí se nic. Jakmile je přední vyrovnávací paměť opět k dispozici, vykreslovací systém vyvolá IsFrontBufferAvailableChanged událost, která oznámí aplikaci WPF. Můžete vytvořit obslužnou rutinu IsFrontBufferAvailableChanged události, aby se znovu restartovala vykreslování s platnou plochou Direct3D. Pokud chcete znovu spustit vykreslování, musíte volat SetBackBuffer.

Při volání SetBackBuffer(D3DResourceType, IntPtr, Boolean) s parametrem enableSoftwareFallback nastaveným na true, systém vykreslování zachová svůj odkaz na zadní vyrovnávací paměť, když se přední vyrovnávací paměť stane nedostupnou, takže není nutné volat SetBackBuffer , když je přední vyrovnávací paměť znovu k dispozici. Můžou nastat situace, kdy se zařízení uživatele stane nedostupným. Když k tomu dojde, zavolejte SetBackBuffer vydání WPF odkaz na zadní vyrovnávací paměť. Pokud potřebujete zařízení obnovit do továrního nastavení, zavolejte SetBackBuffer s backBuffer nastavením na nulla pak znovu zavolejte SetBackBuffer s backBuffer nastaveným na platnou plochu Direct3D.

V následujícím seznamu jsou uvedena požadovaná nastavení zpětné vyrovnávací paměti pro typ IDirect3DSurface9 .

  • D3DFMT_A8R8G8B8 nebo D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Vícenásobné převzorkování je povoleno pouze na IDirect3DSurface9Ex površích.

Platí pro