D3DImage.SetBackBuffer Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
ouD3DFMT_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 null
como 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
ouD3DFMT_X8R8G8B8
D3DUSAGE_RENDERTARGET
D3DPOOL_DEFAULT
Multisampling é permitido apenas em IDirect3DSurface9Ex
superfícies.