グラフィックスの描画層

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 異方性フィルター処理 3D コンテンツを描画するとき、WPF によって異方性フィルター処理が試行されます。 異方性フィルター処理は、カメラから遠くにあり、カメラに対して急な角度が付く表面の画質を上げます。
3D MIP マッピング 3D コンテンツを描画するとき、WPF によって MIP マッピングが試行されます。 MIP マッピングを使うと、Viewport3D でテクスチャが小さな視野を占めるときに、テクスチャのレンダリング品質が向上します。
放射状グラデーション サポートされていますが、大きなオブジェクトでは RadialGradientBrush の使用は避けてください。
3D ライティング計算 WPF によって、頂点ごとに照明が実行されます。つまり、メッシュに適用される素材ごとに、各頂点で光の強度を計算する必要があります。
テキスト描画 サブピクセル フォント レンダリングでは、グラフィックス ハードウェアのピクセル シェーダーが利用されます。

次の機能は、描画層 2 でのみハードウェア高速化されます。

機能 メモ
3D アンチエイリアス 3D アンチエイリアシングは、Windows Vista や Windows 7 など、Windows Display Driver Model (WDDM) 対応のオペレーティング システムでのみサポートされています。

次の機能はハードウェア高速化されません

機能 メモ
印刷コンテンツ 印刷コンテンツはすべて、WPF ソフトウェア パイプラインを利用してレンダリングされます。
RenderTargetBitmap を使用するラスター化コンテンツ RenderTargetBitmapRender メソッドを使用してレンダリングされたすべてのコンテンツ。
TileBrush を使用するタイル化コンテンツ TileBrushTileMode プロパティが Tile に設定されているタイル化コンテンツ。
グラフィックス ハードウェアの最大テクスチャ サイズを超過する表面 ほとんどのグラフィックス ハードウェアの場合、大きな表面のサイズは 2048x2048 ピクセルか 4096x4096 ピクセルになります。
ビデオ RAM 要件がグラフィックス ハードウェアのメモリを超える操作 Windows SDK の WPF Performance Suite に含まれる Perforator ツールを利用し、アプリケーションのビデオ RAM 使用率を監視できます。
レイヤード ウィンドウ レイヤード ウィンドウを使用すると、WPF アプリケーションで、四角形以外のウィンドウ内の画面にコンテンツを描画することができます。 Windows Vista や Windows 7 など、Windows Display Driver Model (WDDM) 対応のオペレーティング システムでは、レイヤード ウィンドウがハードウェアで高速化されます。 Windows XP のような他のシステムの場合、ハードウェア高速化なしで、ソフトウェアによりレイヤード ウィンドウがレンダリングされます。

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

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

その他の参照情報

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

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

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

設定 説明
Disable Hardware Acceleration Option (ハードウェア高速化オプションを無効にする) ハードウェア高速化を有効にするかどうかを指定します。
Maximum Multisample Value (最大マルチサンプル値) 3D コンテンツをアンチエイリアシングするためのマルチサンプリングの度合いを指定します。
Required Video Driver Date Setting (ビデオ ドライバーの日付設定が必須) 2004 年 11 月より前にリリースされたドライバーについて、ハードウェア高速化を無効にするかどうかを指定します。
Use Reference Rasterizer Option (リファレンス ラスタライザー オプションを使用する) WPF でリファレンス ラスタライザーを使用するかどうかを指定します。

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

WPF パフォーマンス プロファイリング データ

WPF には、パフォーマンス プロファイリング ツールのセットがあります。これを使用すると、アプリケーションの実行時動作を分析したり、適用できるパフォーマンス最適化の種類を決定したりすることができます。 次の表は、Windows SDK ツール、WPF Performance Suite に含まれるパフォーマンス プロファイリング ツールをまとめたものです。

ツール 説明
Perforator 描画動作を分析します。
ビジュアル プロファイラー ビジュアル ツリーの要素による WPF サービス (レイアウトやイベント処理など) の使用状況をプロファイルするために使用します。

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

DirectX 診断ツール

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

~\Windows\System32

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

Screenshot: DirectX Diagnostic Tool
DirectX 診断ツールのメイン ウィンドウ

関連項目