D3DImage.IsFrontBufferAvailable 屬性

定義

會得到一個值,表示是否存在前緩衝區。

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

屬性值

true如果存在前緩衝區;否則,。 false

範例

以下程式碼範例說明如何在渲染合成目標時檢查該 IsFrontBufferAvailable 屬性。 如需詳情,請參閱 逐步解說:在 WPF 中裝載 Direct3D9 內容

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;
        }
    }
}

備註

有時候,前端緩衝區變得無法使用。 這種可用性不足的原因可能是螢幕鎖定、全螢幕獨佔的 Direct3D 應用程式、使用者切換或其他系統活動所造成。 發生這種情況時,將會透過處理 IsFrontBufferAvailableChanged 事件通知您的 WPF 應用程式。 您的應用程式對前端緩衝區無法使用時的回應,取決於 WPF 是否能夠退回到軟體轉譯。 SetBackBuffer 方法具有多載,採用參數以指定 WPF 是否退回至軟體渲染。 如需更多資訊,請參閱 D3DImage 類別中的備註。

相依財產資訊

項目 Value
識別碼欄位 IsFrontBufferAvailableProperty
元資料屬性設為 true 沒有

適用於

另請參閱