D3DImage.IsFrontBufferAvailable プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
フロント バッファーが存在するかどうかを示す値を取得します。
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 |
なし |
適用対象
こちらもご覧ください
.NET