Partilhar via


D3DImage.SetBackBuffer Método

Definição

Atribui uma superfície Direct3D como a origem do buffer de fundo.

Sobrecargas

SetBackBuffer(D3DResourceType, IntPtr)

Atribui uma superfície Direct3D como a origem do buffer de fundo.

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Atribui uma superfície Direct3D como a origem do buffer de fundo.

SetBackBuffer(D3DResourceType, IntPtr)

Atribui uma superfície Direct3D como a origem do buffer de fundo.

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 da superfície do Direct3D. Deve ser um D3DResourceType válida.

backBuffer
IntPtr

nativeint

A superfície do Direct3D a ser atribuída como o buffer de fundo.

Atributos

Exceções

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

backBufferType não é um D3DResourceType válido.

Os parâmetros de criação para backBuffer não atendem aos requisitos para o backBufferType ou o dispositivo do backBuffer não é válido.

Exemplos

O exemplo de código a seguir mostra como chamar o SetBackBuffer método para atribuir uma superfície Direct3D. Para obter mais informações, consulte Instruções 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();

Comentários

Chame o SetBackBuffer método para atribuir uma superfície Direct3D ao buffer traseiro.

Observação

O desempenho depende muito das configurações da superfície do Direct3D. Para obter mais informações, consulte Considerações sobre desempenho para interoperabilidade entre Direct3D9 e WPF.

Chamar a SetBackBuffer(D3DResourceType, IntPtr) sobrecarga é idêntico a chamar a SetBackBuffer(D3DResourceType, IntPtr, Boolean) sobrecarga com o enableSoftwareFallback parâmetro definido como false. Quando você chama SetBackBuffer(D3DResourceType, IntPtr) ou chama SetBackBuffer(D3DResourceType, IntPtr, Boolean) 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 está disponível novamente, o sistema de renderização aciona o IsFrontBufferAvailableChanged evento para notificar seu aplicativo WPF. Você pode criar um manipulador de eventos para que o IsFrontBufferAvailableChanged evento reinicie a renderização novamente com uma superfície Direct3D válida. Para reiniciar a renderização, você deve chamar SetBackBuffer.

A lista a seguir mostra as configurações de buffer traseiro necessárias para o IDirect3DSurface9 tipo.

  • D3DFMT_A8R8G8B8 ou D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling é permitido apenas em IDirect3DSurface9Ex superfícies.

Confira também

Aplica-se a

SetBackBuffer(D3DResourceType, IntPtr, Boolean)

Atribui uma superfície Direct3D como a origem do buffer de fundo.

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

O tipo da superfície do Direct3D. Deve ser um D3DResourceType válida.

backBuffer
IntPtr

nativeint

A superfície do Direct3D a ser atribuída como o buffer de fundo.

enableSoftwareFallback
Boolean

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

Atributos

Comentários

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 está disponível novamente, o sistema de renderização aciona o IsFrontBufferAvailableChanged evento para notificar seu aplicativo WPF. Você pode criar um manipulador de eventos para que o IsFrontBufferAvailableChanged evento reinicie a renderização novamente com uma superfície Direct3D válida. Para reiniciar a renderização, você deve chamar SetBackBuffer.

Quando você chama SetBackBuffer(D3DResourceType, IntPtr, Boolean) com o enableSoftwareFallback parâmetro definido como true, o sistema de renderização mantém sua referência ao buffer traseiro quando o buffer frontal fica indisponível, portanto, não é necessário chamar SetBackBuffer quando o buffer frontal estiver disponível novamente. Pode haver situações em que o dispositivo do usuário fica indisponível. Quando isso ocorrer, chame SetBackBuffer para liberar a referência do WPF para o buffer de fundo. Se você precisar redefinir seu dispositivo, chame SetBackBuffer com definido nullcomo backBuffer e chame SetBackBuffer novamente com definido como backBuffer uma superfície Direct3D válida.

A lista a seguir mostra as configurações de buffer traseiro necessárias para o IDirect3DSurface9 tipo.

  • D3DFMT_A8R8G8B8 ou D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling é permitido apenas em IDirect3DSurface9Ex superfícies.

Aplica-se a