D3DImage.SetBackBuffer Método

Definición

Asigna una superficie de Direct3D como origen del búfer de reserva.

Sobrecargas

SetBackBuffer(D3DResourceType, IntPtr)

Asigna una superficie de Direct3D como origen del búfer de reserva.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Asigna una superficie de Direct3D como origen del búfer de reserva.

SetBackBuffer(D3DResourceType, IntPtr)

Asigna una superficie de Direct3D como origen del búfer de reserva.

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)

Parámetros

backBufferType
D3DResourceType

Tipo de la superficie de Direct3D. Debe ser un tipo D3DResourceType válido.

backBuffer
IntPtr

nativeint

Superficie de Direct3D que se va a asignar como búfer de reserva.

Atributos

Excepciones

D3DImage no se ha bloqueado mediante una llamada al método Lock() o TryLock(Duration).

backBufferType no es un D3DResourceType válido.

Los parámetros de creación para backBuffer no cumplen los requisitos de backBufferType-o-El dispositivo backBuffer no es válido.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar al SetBackBuffer método para asignar una superficie de Direct3D. Para obtener más información, consulte Tutorial: Hospedar contenido Direct3D9 en 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();

Comentarios

Llame al SetBackBuffer método para asignar una superficie de Direct3D al búfer de reserva.

Nota:

El rendimiento depende en gran medida de la configuración de la superficie de Direct3D. Para obtener más información, consulte Consideraciones de rendimiento para la interoperabilidad entre Direct3D9 y WPF.

Llamar a la SetBackBuffer(D3DResourceType, IntPtr) sobrecarga es idéntica a llamar a la SetBackBuffer(D3DResourceType, IntPtr, Boolean) sobrecarga con el enableSoftwareFallback parámetro establecido en false. Cuando se llama SetBackBuffer(D3DResourceType, IntPtr) a o llama SetBackBuffer(D3DResourceType, IntPtr, Boolean) con el enableSoftwareFallback parámetro establecido en false, el sistema de representación libera su referencia al búfer de reserva cuando el búfer frontal deja de estar disponible y no se muestra nada. Cuando el búfer frontal está disponible de nuevo, el sistema de representación genera el evento IsFrontBufferAvailableChanged para notificar a la aplicación WPF. Puede crear un controlador de eventos para que el evento IsFrontBufferAvailableChanged reinicie la representación de nuevo con una superficie de Direct3D válida. Para reiniciar la representación, debe llamar a SetBackBuffer.

En la lista siguiente se muestra la configuración de búfer de reserva necesaria para el IDirect3DSurface9 tipo .

  • D3DFMT_A8R8G8B8 o D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Solo se permite el muestreo múltiple en IDirect3DSurface9Ex superficies.

Consulte también

Se aplica a

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Asigna una superficie de Direct3D como origen del búfer de reserva.

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)

Parámetros

backBufferType
D3DResourceType

Tipo de la superficie de Direct3D. Debe ser un tipo D3DResourceType válido.

backBuffer
IntPtr

nativeint

Superficie de Direct3D que se va a asignar como búfer de reserva.

enableSoftwareFallback
Boolean

true para revertir en la representación de software; si no, false.

Atributos

Comentarios

Cuando se llama a la sobrecarga SetBackBuffer(D3DResourceType, IntPtr) o se llama a la sobrecarga SetBackBuffer(D3DResourceType, IntPtr, Boolean) con el parámetro enableSoftwareFallback establecido en false, el sistema de representación libera su referencia al búfer de reserva cuando el búfer frontal deja de estar disponible y no se muestra nada. Cuando el búfer frontal está disponible de nuevo, el sistema de representación genera el evento IsFrontBufferAvailableChanged para notificar a la aplicación WPF. Puede crear un controlador de eventos para que el evento IsFrontBufferAvailableChanged reinicie la representación de nuevo con una superficie de Direct3D válida. Para reiniciar la representación, debe llamar a SetBackBuffer.

Cuando se llama SetBackBuffer(D3DResourceType, IntPtr, Boolean) con el enableSoftwareFallback parámetro establecido en true, el sistema de representación conserva su referencia al búfer de reserva cuando el búfer frontal deja de estar disponible, por lo que no es necesario llamar SetBackBuffer cuando el búfer frontal está disponible de nuevo. Puede haber situaciones en las que el dispositivo del usuario deje de estar disponible. Cuando esto ocurre, llame SetBackBuffer a para liberar la referencia de WPF al búfer de reserva. Si necesita restablecer el dispositivo, llame SetBackBuffer a con backBuffer establecido en nully vuelva a llamar SetBackBuffer a con establecido en backBuffer una superficie de Direct3D válida.

En la lista siguiente se muestra la configuración de búfer de reserva necesaria para el IDirect3DSurface9 tipo .

  • D3DFMT_A8R8G8B8 o D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Solo se permite el muestreo múltiple en IDirect3DSurface9Ex superficies.

Se aplica a