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
| 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_A8R8G8B8ouD3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_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_A8R8G8B8ouD3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
A multisampling é permitida somente em IDirect3DSurface9Ex superfícies.