Share via


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 應用程式、使用者切換或其他系統活動所造成。 發生這種情況時,您的 WPF 應用程式會藉由處理 IsFrontBufferAvailableChanged 事件來收到通知。 您的應用程式如何回應前端緩衝區變成無法使用,取決於 WPF 是否已啟用回復軟體轉譯。 SetBackBuffer方法具有多載,其採用參數,指定 WPF 是否回復為軟體轉譯。 如需詳細資訊,請參閱 類別中的 D3DImage 備註。

相依性屬性資訊

識別碼欄位 IsFrontBufferAvailableProperty
設定為 的中繼資料屬性 true

適用於

另請參閱