次の方法で共有


グラフィックス レンダリング層

レンダリング層は、WPF アプリケーションを実行するデバイスのグラフィックス ハードウェア機能とパフォーマンスのレベルを定義します。

グラフィックス ハードウェア

レンダリング層レベルに最も影響を与えるグラフィックス ハードウェアの機能は次のとおりです。

  • ビデオ RAM グラフィックス ハードウェア上のビデオ メモリの量によって、グラフィックスの合成に使用できるバッファーのサイズと数が決まります。

  • ピクセル シェーダー ピクセル シェーダーは、ピクセル単位で効果を計算するグラフィックス処理関数です。 表示されるグラフィックスの解像度によっては、表示フレームごとに数百万ピクセルの処理が必要になる場合があります。

  • 頂点シェーダー 頂点シェーダーは、オブジェクトの頂点データに対して数学的演算を実行するグラフィックス処理関数です。

  • マルチテクスチャのサポート マルチテクスチャのサポートとは、3D グラフィックス オブジェクトのブレンド操作中に 2 つ以上の異なるテクスチャを適用する機能を指します。 マルチテクスチャ のサポートの程度は、グラフィックス ハードウェア上のマルチテクスチャ ユニットの数によって決まります。

レンダリング層の定義

グラフィックス ハードウェアの機能によって、WPF アプリケーションのレンダリング機能が決まります。 WPF システムは、次の 3 つのレンダリング層を定義します。

  • レンダリング層 0 グラフィックス ハードウェア アクセラレーションなし。 すべてのグラフィックス機能でソフトウェア レンダリングが使用されます。 DirectX バージョン レベルがバージョン 9.0 未満です。

  • レンダリング層 1 一部のグラフィックス機能では、グラフィックス ハードウェア アクセラレーションが使用されます。 DirectX バージョンが 9.0 以上です。

  • レンダリング層 2 ほとんどのグラフィックス機能では、グラフィックス ハードウェア アクセラレーションが使用されます。 DirectX バージョンが 9.0 以上です。

RenderCapability.Tier プロパティを使用すると、アプリケーションの実行時にレンダリング層を取得できます。 レンダリング層を使用して、デバイスが特定のハードウェアアクセラレータグラフィックス機能をサポートしているかどうかを判断します。 その後、アプリケーションは、デバイスでサポートされているレンダリング層に応じて、実行時に異なるコード パスを取得できます。

レンダリング層 0

レンダリング層の値が 0 の場合は、デバイス上のアプリケーションで使用できるグラフィックス ハードウェア アクセラレーションがないことを意味します。 このレベルでは、すべてのグラフィックスがハードウェア アクセラレーションなしでソフトウェアによってレンダリングされることを想定する必要があります。 このレベルの機能は、9.0 未満の DirectX バージョンに対応します。

レンダリング層 1 とレンダリング層 2

.NET Framework 4 以降では、レンダリング層 1 は、DirectX 9.0 以降をサポートするグラフィックス ハードウェアのみを含むように再定義されました。 DirectX 7 または 8 をサポートするグラフィックス ハードウェアがレンダリング層 0 として定義されるようになりました。

レンダリング層の値が 1 または 2 の場合、必要なシステム リソースが使用可能で使い果たされていない場合、WPF のグラフィックス機能のほとんどはハードウェア アクセラレーションを使用します。 これは、9.0 以上の DirectX バージョンに対応します。

次の表は、レンダリング層 1 とレンダリング層 2 のグラフィックス ハードウェア要件の違いを示しています。

特徴 階層 1 階層 2
DirectX バージョン 9.0 以上である必要があります。 9.0 以上である必要があります。
ビデオRAM 60 MB 以上である必要があります。 120 MB 以上である必要があります。
ピクセル シェーダー バージョン レベルは 2.0 以上である必要があります。 バージョン レベルは 2.0 以上である必要があります。
頂点シェーダー 要件なし。 バージョン レベルは 2.0 以上である必要があります。
マルチテクスチャ ユニット 要件なし。 単位数は 4 以上である必要があります。

次の機能は、レンダリング層 1 とレンダリング層 2 のハードウェア アクセラレータです。

特徴 注記
2D レンダリング ほとんどの 2D レンダリングがサポートされています。
3D ラスター化 ほとんどの 3D ラスタライズがサポートされています。
3D異方性フィルタリング WPF は、3D コンテンツのレンダリング時に異方性フィルタリングを使用しようとします。 異方性フィルタリングとは、カメラに対して遠く離れた急な角度のサーフェス上のテクスチャの画質を高めることです。
3D MIP マッピング WPF は、3D コンテンツのレンダリング時に MIP マッピングの使用を試みます。 MIP マッピングを使用すると、テクスチャが Viewport3Dの小さな視野を占めている場合のテクスチャ レンダリングの品質が向上します。
放射状グラデーション サポートされている間は、大きなオブジェクトで RadialGradientBrush を使用しないようにします。
3D 照明の計算 WPF は頂点単位の照明を実行します。つまり、メッシュに適用される各マテリアルについて、各頂点で光の強度を計算する必要があります。
テキスト レンダリング サブピクセル フォント レンダリングでは、グラフィックス ハードウェアで使用可能なピクセル シェーダーが使用されます。

次の機能は、レンダリング層 2 でのみハードウェア アクセラレータされます。

特徴 注記
3D アンチエイリアシング 3D アンチエイリアシングは、Windows Vista や Windows 7 などの Windows ディスプレイ ドライバー モデル (WDDM) をサポートするオペレーティング システムでのみサポートされます。

次の機能は、ハードウェア アクセラレータ ではありません

特徴 注記
印刷されたコンテンツ 印刷されたすべてのコンテンツは、WPF ソフトウェア パイプラインを使用してレンダリングされます。
RenderTargetBitmap の使用されているラスター化コンテンツ RenderRenderTargetBitmap メソッドを使用してレンダリングされるすべてのコンテンツ。
TileBrush を使用するタイル コンテンツ TileModeTileBrush プロパティがTileに設定されているタイル コンテンツ。
グラフィックス ハードウェアの最大テクスチャ サイズを超えるサーフェス ほとんどのグラフィックス ハードウェアでは、大きなサーフェスのサイズは 2048 x 2048 または 4096 x 4096 ピクセルです。
ビデオ RAM 要件がグラフィックス ハードウェアのメモリを超える操作 Windows SDK の WPF Performance Suite に含まれている穴あけツールを使用して、アプリケーション のビデオ RAM の使用状況を監視できます。
レイヤード ウィンドウ レイヤード ウィンドウを使用すると、WPF アプリケーションは四角形以外のウィンドウで画面にコンテンツをレンダリングできます。 Windows Vista や Windows 7 などの Windows ディスプレイ ドライバー モデル (WDDM) をサポートするオペレーティング システムでは、階層化されたウィンドウはハードウェア アクセラレータによって高速化されます。 Windows XP などの他のシステムでは、階層化されたウィンドウは、ハードウェア アクセラレーションなしでソフトウェアによってレンダリングされます。

WPF でレイヤーウィンドウを有効にするには、次の Window プロパティを設定します。

- WindowStyle = None
- AllowsTransparency = true
- Background = Transparent

その他のリソース

次のリソースは、WPF アプリケーションのパフォーマンス特性を分析するのに役立ちます。

グラフィックス レンダリング レジストリの設定

WPF には、WPF レンダリングを制御するための 4 つのレジストリ設定が用意されています。

設定 説明
ハードウェア アクセラレーション オプションを無効にする ハードウェア アクセラレーションを有効にするかどうかを指定します。
最大マルチサンプル値 アンチエイリアシング 3D コンテンツのマルチサンプリングの次数を指定します。
必須のビデオドライバー日付設定 2004 年 11 月より前にリリースされたドライバーのハードウェア アクセラレータをシステムで無効にするかどうかを指定します。
リファレンス ラスタライザー オプションを使用する WPF で参照ラスタライザーを使用するかどうかを指定します。

これらの設定には、WPF レジストリ設定を参照する方法を知っている任意の外部構成ユーティリティからアクセスできます。 これらの設定は、Windows レジストリ エディターを使用して値に直接アクセスして作成または変更することもできます。 詳細については、「グラフィックス レンダリングのレジストリ設定」を参照してください。

WPF パフォーマンス プロファイリング ツール

WPF には、アプリケーションの実行時の動作を分析し、適用できるパフォーマンス最適化の種類を決定できるパフォーマンス プロファイリング ツールのスイートが用意されています。 次の表に、Windows SDK ツール WPF Performance Suite に含まれているパフォーマンス プロファイリング ツールを示します。

道具 説明
穿孔機 レンダリング動作の分析に使用します。
ビジュアルプロファイラー ビジュアル ツリー内の要素による、レイアウトやイベント処理などの WPF サービスの使用をプロファイリングするために使用します。

WPF Performance Suite は、パフォーマンス データの豊富なグラフィカル ビューを提供します。 WPF パフォーマンス ツールの詳細については、「 WPF Performance Suite」を参照してください。

DirectX 診断ツール

DirectX 診断ツール (Dxdiag.exe) は、DirectX 関連の問題のトラブルシューティングに役立つよう設計されています。 DirectX 診断ツールの既定のインストール フォルダーは次のとおりです。

~\Windows\System32

DirectX 診断ツールを実行すると、メイン ウィンドウに一連のタブが表示され、DirectX 関連の情報を表示および診断できます。 たとえば、[ システム ] タブには、コンピューターに関するシステム情報が表示され、コンピューターにインストールされている DirectX のバージョンが指定されます。

スクリーンショット: DirectX 診断ツール
DirectX 診断ツールのメイン ウィンドウ

こちらも参照ください