グラフィックスの描画層
更新 : 2007 年 11 月
描画層は、WPF アプリケーションを実行するデバイスのグラフィックス ハードウェアの機能およびパフォーマンスのレベルを定義します。
このトピックには次のセクションが含まれています。
- グラフィックス ハードウェア
- 描画層の定義
- その他の技術情報
- 関連トピック
グラフィックス ハードウェア
描画層のレベルに大きく影響するグラフィックス ハードウェアの機能は、次のとおりです。
ビデオ RAM グラフィックス ハードウェアのビデオ メモリの量によって、グラフィックスを合成する際に使用できるバッファのサイズと数が決まります。
ピクセル シェーダ ピクセル シェーダは、ピクセル単位で効果を計算するグラフィックス処理関数です。表示するグラフィックスの解像度によっては、各表示フレームの処理に数百万ピクセルが必要な場合もあります。
頂点シェーダ 頂点シェーダは、オブジェクトの頂点データの算術演算を実行するグラフィックス処理関数です。
マルチテクスチャのサポート マルチテクスチャがサポートされていると、3D グラフィックス オブジェクトのブレンド操作を行うときに、2 つ以上の別個のテクスチャを適用できます。マルチテクスチャのサポートの度合いは、グラフィックス ハードウェアのマルチテクスチャ ユニットの数によって決まります。
ピクセル シェーダ、頂点シェーダ、およびマルチテクスチャの各機能を使用して、DirectX の特定のバージョン レベルを定義し、次にこのバージョン レベルを使用して WPF のさまざまな描画層を定義します。
描画層の定義
グラフィックス ハードウェアの機能によって、WPF アプリケーションの表示能力が決まります。WPF システムは、次の 3 つの描画階層を定義します。
描画層 0 グラフィックス ハードウェアの加速が使用されません。DirectX のバージョン レベルは Version 7.0 未満です。
描画層 1 グラフィックス ハードウェアの加速が部分的に使用されます。DirectX のバージョン レベルは、Version 7.0 以上で Version 9.0 未満です。
描画層 2 ほとんどのグラフィックス機能でグラフィックス ハードウェアの加速を使用します。DirectX のバージョン レベルは Version 9.0 以上です。
Tier プロパティを使用すると、アプリケーションの実行時に描画層を取得できるため、開発者は、ハードウェアによって加速される特定のグラフィックス機能がデバイスでサポートされているかどうかを確認できます。アプリケーションは、デバイスでサポートされている描画層に応じて、実行時に異なるコード パスを受け取ることができます。
描画層 0
描画層の値 0 は、デバイスのアプリケーションでグラフィックス ハードウェアによる加速が行われないことを示します。この描画層では、開発者は、すべてのグラフィックスがハードウェアによる加速を使用せずにソフトウェアで描画されることを想定する必要があります。この層の機能は、DirectX の 7.0 未満のバージョンに対応します。
描画層 1
描画層の値 1 は、ビデオ カードでグラフィックス ハードウェアによる加速が部分的に行われることを示します。これは、DirectX の 7.0 以上 9.0 未満のバージョンに対応します。
描画層 1 では、以下の機能がハードウェアによって加速されます。
機能 |
説明 |
---|---|
2D レンダリング |
ほとんどの 2D レンダリングがサポートされています。 |
3D ラスタライズ |
ほとんどの 3D ラスタライズがサポートされています。ただし、WPF では、ソフトウェアを使用して頂点の光の強さが計算され、算出された値が頂点の色としてハードウェアに渡されます。これは、層 1 では光源処理の速度が低下することを意味します。 |
3D 異方性フィルタリング |
描画層が 1 以上の場合、WPF では、3D コンテンツの描画時に異方性フィルタリングの使用が試行されます。異方性フィルタリングとは、カメラから遠く、視線角度のきつい位置にあるサーフェイス上のテクスチャの画質を向上させる手法です。 |
3D ミップ マッピング |
描画層が 1 以上の場合、WPF では、3D コンテンツの描画時にミップ マッピングの使用が試行されます。ミップ マッピングを使用すると、テクスチャが Viewport3D の狭い視野を占める場合にテクスチャの描画品質が向上します。 |
描画層 1 では、以下の機能はハードウェアによって加速されません。
機能 |
説明 |
---|---|
ビットマップ効果 |
ビジュアルでビットマップ効果を使用すると、ビジュアルがハードウェアによる加速を使用せずに描画されます。 |
印刷されるコンテンツ |
印刷されるすべてのコンテンツが、WPF ソフトウェア パイプラインによって表示されます。 |
RenderTargetBitmap オブジェクトを使用する、ラスタライズされたコンテンツ |
すべてのコンテンツが、RenderTargetBitmap の Render メソッドによって描画されます。 |
TileBrush を使用する、並べて表示されるコンテンツ |
すべての並べて表示されるコンテンツにおいて TileBrush の TileMode プロパティが Tile に設定されます。 |
グラフィックス ハードウェアの最大テクスチャ サイズを超えるサーフェイス。 |
ほとんどのビデオ カードでは、2048 x 2048 ピクセルまたは 4096 x 4096 ピクセルよりサイズが大きいサーフェイスはサポートされません。 |
必要なビデオ RAM 容量がグラフィックス ハードウェアのメモリ容量を上回るすべての操作 |
Windows SDK に付属する WPF のパフォーマンス プロファイリング ツール ツールを使用して、アプリケーション ビデオ RAM の使用量を監視できます。 |
レイヤード ウィンドウ |
レイヤード ウィンドウを使用すると、WPF アプリケーションで、コンテンツを四角形以外のウィンドウの画面に描画できます。Windows Vista では、レイヤード ウィンドウはハードウェアによって加速されます。Windows XP などのその他のシステムでは、レイヤード ウィンドウはハードウェアによる加速を使用せずにソフトウェアで描画されます。 WPF でレイヤード ウィンドウを有効にするには、Window の次のプロパティを設定します。
|
放射状グラデーション |
RadialGradientBrush を使用できます。 |
3D の光源計算 |
WPF は、頂点ごとの光源処理を実行します。そのため、メッシュに適用されている各素材の頂点ごとに光の強さを計算する必要があります。層 1 では、計算がソフトウェアによって行われます。層 2 では、計算がハードウェアで行われます。 |
テキストの描画 |
サブピクセル フォントの描画では、グラフィックス ハードウェアで利用可能なピクセル シェーダを使用します。 |
3D アンチエイリアシング |
3D アンチエイリアシングを使用できます。 |
グラフィックス ハードウェアの次の機能によって描画層 1 が定義されます。
機能 |
説明 |
---|---|
DirectX のバージョン |
7.0 以上 9.0 未満であることが必要です。 |
ビデオ RAM |
30 MB 以上であることが必要です。 |
マルチテクスチャ単位 |
単位数は、2 以上であることが必要です。 |
描画層 1 をサポートする一般的なグラフィックス カードを次の表に示します。
Manufacturer |
モデル |
---|---|
ATI |
Radeon モデル : 256、7000、7500、8500、9000、9100、9200、および 9250 |
Intel |
Intel Extreme Graphics モデル : 845G、845GE、845GL、および 845GV Intel Extreme Graphics II モデル : 852GME、855GM、855GME、865G、および 865GV |
NVidia |
GeForce 256 GeForce2 モデル : GTS、MX、MX100、MX200、MX400、Pro、Ti、および Ultra GeForce3 モデル : Ti200 および Ti500 GeForce4 モデル : MX420、MX440、MX460、MX4000、Ti4200、Ti4400、Ti4600、および Ti4800 |
描画層 2
描画層の値 2 は、必要なシステム リソースが枯渇していない場合に、WPF のほとんどのグラフィックス機能がハードウェア アクセラレータを使用することを示します。これは、DirectX の 9.0 以上のバージョンに対応します。
描画層 2 では、以下の機能がハードウェアによって加速されます。
機能 |
説明 |
---|---|
層 1 の機能 |
層 1 のすべての機能が含まれます。 |
放射状グラデーション |
サポートされますが、大きなオブジェクトでは RadialGradientBrush を使用しないでください。 |
3D の光源計算 |
WPF は、頂点ごとの光源処理を実行します。そのため、メッシュに適用されている各素材の頂点ごとに光の強さを計算する必要があります。層 1 では、計算がソフトウェアによって行われます。層 2 では、計算がハードウェアで行われます。 |
テキストの描画 |
サブピクセル フォントの描画では、グラフィックス ハードウェアで利用可能なピクセル シェーダを使用します。 |
3D アンチエイリアシング |
3D アンチエイリアシングは、Windows Vista でのみサポートされます。 |
描画層 2 では、以下の機能はハードウェアによって加速されません。
機能 |
説明 |
---|---|
ビットマップ効果 |
ビジュアルでビットマップ効果を使用すると、ビジュアルがハードウェアによる加速を使用せずに描画されます。 |
印刷されるコンテンツ |
印刷されるすべてのコンテンツが、WPF ソフトウェア パイプラインによって表示されます。 |
RenderTargetBitmap を使用する、ラスタライズされたコンテンツ |
すべてのコンテンツが、RenderTargetBitmap の Render メソッドによって描画されます。 |
TileBrush を使用する、並べて表示されるコンテンツ |
すべての並べて表示されるコンテンツにおいて TileBrush の TileMode プロパティが Tile に設定されます。 |
グラフィックス ハードウェアの最大テクスチャ サイズを超えるサーフェイス。 |
ほとんどのグラフィックス ハードウェアでは、大型のサーフェイスのサイズは 2048 x 2048 ピクセルまたは 4096 x 4096 ピクセルです。 |
必要なビデオ RAM 容量がグラフィックス ハードウェアのメモリ容量を上回るすべての操作 |
Windows SDK に付属する WPF のパフォーマンス プロファイリング ツール ツールを使用して、アプリケーション ビデオ RAM の使用量を監視できます。 |
レイヤード ウィンドウ |
レイヤード ウィンドウを使用すると、WPF アプリケーションで、コンテンツを四角形以外のウィンドウの画面に描画できます。Windows Vista では、レイヤード ウィンドウはハードウェアによって加速されます。Windows XP などのその他のシステムでは、レイヤード ウィンドウはハードウェアによる加速を使用せずにソフトウェアで描画されます。 WPF でレイヤード ウィンドウを有効にするには、Window の次のプロパティを設定します。
|
グラフィックス ハードウェアの次の機能によって描画層 2 が定義されます。
機能 |
説明 |
---|---|
DirectX のバージョン |
9.0 以上であることが必要です。 |
ビデオ RAM |
120 MB 以上であることが必要です。 |
ピクセル シェーダ |
バージョン レベルは、2.0 以上であることが必要です。 |
頂点シェーダ |
バージョン レベルは、2.0 以上であることが必要です。 |
マルチテクスチャ単位 |
単位数は、4 以上であることが必要です。 |
描画層 2 をサポートする一般的なグラフィックス カードを次の表に示します。
Manufacturer |
モデル |
---|---|
ATI |
Radeon モデル : 9550、9600、9800、および X シリーズ |
Intel |
Intel GMA900 モデル : 915G Intel GMA950 モデル : 945G |
NVidia |
Geforce FX シリーズ、6xxx シリーズ、および 7xxx シリーズ |
その他の技術情報
次の技術情報は、WPF アプリケーションのパフォーマンス特性の分析に役立ちます。
グラフィックス レンダリングのレジストリ設定
WPF には、WPF のレンダリングを制御するために 4 つのレジストリ設定が用意されています。
設定 |
説明 |
---|---|
Disable Hardware Acceleration Option |
ハードウェアによる加速を有効にするかどうかを指定します。 |
Maximum Multisample Value |
3-D コンテンツのアンチエイリアシングのマルチサンプリングの度合いを指定します。 |
Required Video Driver Date Setting |
2004 年 11 月より前にリリースされたドライバに対してハードウェアの加速をシステムで無効にするかどうかを指定します。 |
Use Reference Rasterizer Option |
WPF でリファレンス ラスタライザを使用するかどうかを指定します。 |
これらの設定には、WPF レジストリ設定の参照方法を認識している外部構成ユーティリティを使用してアクセスできます。また、これらの設定は、Windows レジストリ エディタを使用して値に直接アクセスして作成または変更することもできます。詳細については、「グラフィックス レンダリングのレジストリ設定」を参照してください。
WPF パフォーマンス プロファイリング ツール
WPF は、アプリケーションの実行時の動作を分析したり、適用可能なパフォーマンス最適化の種類を決定できるパフォーマンス プロファイリング ツール スイートを提供します。Windows SDK ツール (WPFPerf) に含まれる 5 つのパフォーマンス プロファイリング ツールを次の表に示します。
ツール |
説明 |
---|---|
イベント トレース |
イベントの分析とイベント ログ ファイルの生成に使用します。 |
Perforator |
レンダリング動作の分析に使用します。 |
トレース ビューア |
WPF ユーザー インターフェイス形式で Event Tracing for Windows (ETW) ログ ファイルを記録、表示、および参照します。 |
ビジュアル プロファイラ |
ビジュアル ツリーの要素による WPF サービス (レイアウトやイベント処理など) の使用状況に関するプロファイリングで使用します。 |
作業セット ビューア |
アプリケーションの作業セット特性を分析するために使用します。 |
ビジュアル プロファイラ ツール スイートでは、パフォーマンス データを多彩なグラフィカル ビューで示します。このスクリーンショットでは、ビジュアル プロファイラの [CPU Usage] セクションに、レンダリングやレイアウトなど、WPF サービスのオブジェクトの使用率の詳細が示されています。
ビジュアル プロファイラ表示出力
WPF のパフォーマンス ツールの詳細については、「WPF のパフォーマンス プロファイリング ツール」を参照してください。
DirectX 診断ツール
DirectX 診断ツール (Dxdiag.exe) は、DirectX 関連の問題のトラブルシューティングを支援します。DirectX 診断ツールの既定のインストール フォルダは次のとおりです。
~\Windows\System32
DirectX 診断ツールを実行すると、メイン ウィンドウに一連のタブが表示され、これらのタブを使用して DirectX 関連の情報を表示および診断することができます。たとえば、[システム] タブにはコンピュータに関するシステム情報が表示され、コンピュータにインストールされている DirectX のバージョンが示されます。
DirectX 診断ツールのメイン ウィンドウ