D3DImage.SetBackBuffer Método

Definição

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

Sobrecargas

Nome Description
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 de superfície Direct3D. Deve ser válido D3DResourceType.

backBuffer
IntPtr

nativeint

A superfície 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 ou TryLock(Duration) para os Lock() métodos.

backBufferType não é válido D3DResourceType.

Os parâmetros de criação para backBuffer não atendem aos requisitos para o backBufferTypedispositivo -ou-O backBuffer dispositivo 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 Passo a passo: hospedagem de 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 de fundo.

Note

O desempenho depende muito das configurações da superfície do Direct3D. Para obter mais informações, consulte Considerações de desempenho para a interoperabilidade do Direct3D9 e do 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 de fundo 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 back necessárias para o IDirect3DSurface9 tipo.

  • D3DFMT_A8R8G8B8 ou D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

A multisampling é permitida somente 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 de superfície Direct3D. Deve ser válido D3DResourceType.

backBuffer
IntPtr

nativeint

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

enableSoftwareFallback
Boolean

true para recuar na 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 de fundo 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 de fundo 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, ligue SetBackBuffer com backBuffer definido como nulle, em seguida, ligue SetBackBuffer novamente com backBuffer definido como uma superfície Direct3D válida.

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

  • D3DFMT_A8R8G8B8 ou D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

A multisampling é permitida somente em IDirect3DSurface9Ex superfícies.

Aplica-se a