Condividi tramite


D3DImage.IsFrontBufferAvailable Proprietà

Definizione

Ottiene un valore che indica se esiste un buffer anteriore.

public:
 property bool IsFrontBufferAvailable { bool get(); };
public bool IsFrontBufferAvailable { get; }
member this.IsFrontBufferAvailable : bool
Public ReadOnly Property IsFrontBufferAvailable As Boolean

Valore della proprietà

true se esiste un buffer anteriore; in caso contrario, false.

Esempio

Nell'esempio di codice seguente viene illustrato come controllare la IsFrontBufferAvailable proprietà durante il rendering della destinazione della composizione. Per altre informazioni, vedere Procedura dettagliata: Hosting di contenuto Direct3D9 in WPF.

void CompositionTarget_Rendering(object sender, EventArgs e)
{
    RenderingEventArgs args = (RenderingEventArgs)e;

    // It's possible for Rendering to call back twice in the same frame 
    // so only render when we haven't already rendered in this frame.
    if (d3dimg.IsFrontBufferAvailable && _lastRender != args.RenderingTime)
    {
        IntPtr pSurface = IntPtr.Zero;
        HRESULT.Check(GetBackBufferNoRef(out pSurface));
        if (pSurface != IntPtr.Zero)
        {
            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();

            _lastRender = args.RenderingTime;
        }
    }
}

Commenti

Occasionalmente, il buffer anteriore diventa non disponibile. Questa mancanza di disponibilità può essere causata dal blocco dello schermo, dalle applicazioni Direct3D esclusive a schermo intero, dal cambio utente o da altre attività di sistema. In questo caso, l'applicazione WPF riceve una notifica gestendo l'evento IsFrontBufferAvailableChanged . Il modo in cui l'applicazione risponde al buffer anteriore che diventa non disponibile dipende dal fatto che WPF sia abilitato per eseguire il fallback al rendering software. Il SetBackBuffer metodo dispone di un overload che accetta un parametro che specifica se WPF esegue il fallback al rendering software. Per altre informazioni, vedere le osservazioni nella D3DImage classe .

Informazioni sulle proprietà di dipendenza

Elemento Valore
Campo Identificatore IsFrontBufferAvailableProperty
Proprietà dei metadati impostate su true Nessuno

Si applica a

Vedi anche