D3DImage.SetBackBuffer Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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_A8R8G8B8ouD3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_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_A8R8G8B8ouD3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
A multiamostragem é permitida apenas em IDirect3DSurface9Ex superfícies.