D3DImage.SetBackBuffer Método

Definição

Atribui uma superfície Direct3D como fonte do back buffer.

Sobrecargas

Name Description
SetBackBuffer(D3DResourceType, IntPtr)

Atribui uma superfície Direct3D como fonte do back buffer.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Atribui uma superfície Direct3D como fonte do back buffer.

SetBackBuffer(D3DResourceType, IntPtr)

Atribui uma superfície Direct3D como fonte do back buffer.

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

O tipo de superfície Direct3D. Tem de ser um válido D3DResourceType.

backBuffer
IntPtr

nativeint

A superfície Direct3D para atribuir como back buffer.

Atributos

Exceções

O D3DImage não foi bloqueado por uma chamada para os Lock() métodos ou TryLock(Duration) .

backBufferType não é um D3DResourceTypeválido.

Os parâmetros de criação para backBuffer não cumprem os requisitos para o backBufferTypedispositivo -ou-The backBuffer não são válidos.

Exemplos

O seguinte exemplo de código mostra como chamar o SetBackBuffer método para atribuir uma superfície Direct3D. Para obter mais informações, consulte Passo a passo: Hospedando conteúdo Direct3D9 no 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();

Observações

Chama o SetBackBuffer método para atribuir uma superfície Direct3D ao back buffer.

Note

O desempenho depende muito das definições da superfície Direct3D. Para obter mais informações, consulte Considerações de Desempenho para Direct3D9 e Interoperabilidade WPF.

Chamar a SetBackBuffer(D3DResourceType, IntPtr) sobrecarga é idêntico a chamar a SetBackBuffer(D3DResourceType, IntPtr, Boolean) sobrecarga com o enableSoftwareFallback parâmetro definido em false. Quando chama SetBackBuffer(D3DResourceType, IntPtr) ou chama SetBackBuffer(D3DResourceType, IntPtr, Boolean) com o enableSoftwareFallback parâmetro definido para false, o sistema de renderização liberta a sua referência ao back buffer quando o front buffer fica indisponível e nada é exibido. Quando o buffer frontal estiver disponível novamente, o sistema de renderização acionará o IsFrontBufferAvailableChanged evento para notificar seu aplicativo WPF. Pode criar um manipulador de eventos para o evento IsFrontBufferAvailableChanged que permitirá reiniciar a renderização com uma superfície Direct3D válida. Para reiniciar a renderização, você deve chamar SetBackBuffer.

A lista seguinte mostra as definições necessárias de back buffer para o IDirect3DSurface9 tipo.

  • D3DFMT_A8R8G8B8 ou D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

A multiamostragem é permitida apenas em IDirect3DSurface9Ex superfícies.

Ver também

Aplica-se a

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Atribui uma superfície Direct3D como fonte do back buffer.

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);
[<System.Security.SecurityCritical>]
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

O tipo de superfície Direct3D. Tem de ser um válido D3DResourceType.

backBuffer
IntPtr

nativeint

A superfície Direct3D para atribuir como back buffer.

enableSoftwareFallback
Boolean

true para recorrer à renderização por software; caso contrário, false.

Atributos

Observações

Quando você chama a SetBackBuffer(D3DResourceType, IntPtr) sobrecarga ou chama a SetBackBuffer(D3DResourceType, IntPtr, Boolean) sobrecarga com o enableSoftwareFallback parâmetro definido como false, o sistema de renderização libera sua referência ao buffer traseiro quando o buffer frontal fica indisponível e nada é exibido. Quando o buffer frontal estiver disponível novamente, o sistema de renderização acionará o IsFrontBufferAvailableChanged evento para notificar seu aplicativo WPF. Pode criar um manipulador de eventos para o evento IsFrontBufferAvailableChanged que permitirá reiniciar a renderização com uma superfície Direct3D válida. Para reiniciar a renderização, você deve chamar SetBackBuffer.

Quando chama SetBackBuffer(D3DResourceType, IntPtr, Boolean) com o enableSoftwareFallback parâmetro definido para true, o sistema de renderização mantém a sua referência ao buffer traseiro quando o buffer frontal fica indisponível, por isso não há necessidade de chamar SetBackBuffer quando o buffer frontal estiver disponível novamente. Podem existir situações em que o dispositivo do utilizador se torne indisponível. Quando isso acontecer, chame SetBackBuffer para libertar a referência do WPF ao back buffer. Se precisares de reiniciar o dispositivo, liga SetBackBuffer com backBuffer definir para null, e depois liga SetBackBuffer novamente com backBuffer definir para uma superfície Direct3D válida.

A lista seguinte mostra as definições necessárias de back buffer para o IDirect3DSurface9 tipo.

  • D3DFMT_A8R8G8B8 ou D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

A multiamostragem é permitida apenas em IDirect3DSurface9Ex superfícies.

Aplica-se a