次の方法で共有


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 クラスの「解説」を参照してください。

依存プロパティ情報

識別子フィールド IsFrontBufferAvailableProperty
に設定されたメタデータ プロパティ true なし

適用対象

こちらもご覧ください