DirectX を使用した高忠実度グラフィックス
Windows アプリケーション開発者は、Microsoft DirectX を長い間使用して、高品質のハードウェアアクセラレータ付き 3D グラフィックスを提供してきました。 このテクノロジが 1995 年にデビューしたとき、開発者はゲームやエンジニアリング アプリケーションに高品質の 3D グラフィックスを提供できます。ゲーマーやプロフェッショナルは、3D グラフィックス ボードに対して追加料金を支払う必要があります。 現在、最も安価なPCでさえ、対応する3Dグラフィックスハードウェアが含まれています。
これらのグラフィックス機能を活用するために、Windows Vista では、複数のアプリケーションとサービスがグラフィックス処理装置 (GPU) のリソースを共有できるようにする DirectX 用 Windows ディスプレイ ドライバー モデル (WDDM) インフラストラクチャが導入されました。 デスクトップ ウィンドウ マネージャー (DWM) は、このテクノロジを使用して、タスクの切り替えを 3D でアニメーション化し、アプリケーション ウィンドウの動的サムネイル 画像を提供し、デスクトップ アプリケーションに Windows Aero ガラス効果を提供します。
Windows 7 では、さらに多くのグラフィックス機能がアプリケーション開発者の手に提供されます。 Microsoft Win32 開発者は、新しい DirectXAPI セットを通じて、GPU の最新のイノベーションを活用して、高速でスケーラブルで高品質な 2D および 3D グラフィックス、テキスト、画像をアプリケーションに追加できます。 最新の LCD ディスプレイでは、DirectXAPIs では、カラー コンポーネントあたり 8 ビットを超える色深度を使用してデスクトップとウィンドウのコンテンツを表示できます。
DirectX を使用すると、Win32 開発者は GPU の並列処理を使用して画像処理などの汎用計算を行うこともできます。また、DirectX 10 ハードウェア、DirectX 9 ハードウェア、CPU、またはリモート Windows コンピューターにレンダリングすることもできます。 これらのテクノロジは、Windows グラフィックス デバイス インターフェイス (GDI) と Windows GDI+ と相互運用するように設計されており、開発者は Win32 コードへの既存の投資を簡単に維持できます。 ( 2009 年 3 月の DirectX SDK の新機能に関するページを参照してください)。
これらの強化されたグラフィックス機能は、次の COM ベースの API によって提供されます。
- 2D グラフィックスを描画するための Direct2D。
- テキストを配置およびレンダリングするためのDirectWrite。
- 画像を処理および表示するための Windows イメージング コンポーネント。
- 3D グラフィックスを描画するための Direct3D 10。
- Direct3D 11 は、3D グラフィックスを描画し、テセレーション、テクスチャ ストリーミングの制限付きサポート、汎用コンピューティングなどの次世代 GPU テクノロジへのアクセスを提供します。
- ローカルおよびリモートのディスプレイ デバイスと GPU リソースを管理し、DirectX と GDI の相互運用性を提供するための DirectX グラフィックス インフラストラクチャ (DXGI)。
Direct2D
Microsoft Direct3D 10 上に構築された Direct2D は、次世代グラフィックス ハードウェアの機能を使用する Win32 開発者向けのイミディエイト モードの解像度に依存しない 2D API を提供しますが、現在の GDI/GDI+ アプリケーションや Direct3D 10 アプリケーションと十分に相互運用できます。 Direct2D は、GDI および GDI+ よりも優れたパフォーマンスを備えた高品質の 2D レンダリングを提供します。 Win32 開発者は、リソースとその管理を細かく制御できます。 ( Direct2D を参照)。
DirectWrite
今日のアプリケーションの多くは、高品質のテキスト レンダリング、解像度に依存しないアウトライン フォント、Unicode テキストとレイアウトの完全なサポートをサポートする必要があります。 新しい DirectX コンポーネントであるDirectWriteには、次のような機能が用意されています。
- ドキュメントや UI でのテキストの読みやすさを向上させる、デバイスに依存しないテキスト レイアウト システム。
- GDI、Direct2D、またはアプリケーション固有のレンダリング テクノロジを使用できる高品質、サブピクセル、ClearType テキスト レンダリング。
- Direct2D で使用する場合は、ハードウェアアクセラレータテキスト。
- 複数形式のテキストのサポート。
- OpenType フォントの高度な文字体裁機能のサポート。
- サポートされているすべての言語でのテキストのレイアウトとレンダリングのサポート。
- GDI 互換のレイアウトとレンダリング。
DirectWriteフォント システムを使用すると、フォントを使用するためだけに別のインストール手順を実行する必要がなく、手動またはプログラムによるフォント検出に役立つフォント グループ化の構造階層が改善され、"任意の場所の任意のフォント" フォントの使用が可能になります。 API は、複数形式のテキストの測定、描画、ヒット テストをサポートしています。 DirectWriteは、Windows 7 で見つかった主要な言語インフラストラクチャに基づいて、グローバルおよびローカライズされたアプリケーションでサポートされているすべての言語のテキストを処理します。 DirectWriteでは、独自のレイアウトと Unicode からグリフへの処理を実行する開発者向けの低レベルのグリフ レンダリング API も提供されます。 (「DirectWrite」を参照)。
Windows イメージング コンポーネント
Windows Vista では、 Windows イメージング コンポーネント によって、イメージとイメージ メタデータを操作するための拡張可能なフレームワークが導入されました。 Windows Imaging Component でサポートされている画像形式には JPEG、 PNG、 TIFF が含まれており、サポートされているメタデータ形式には XMP と EXIF が含まれます。 Windows 7 では、Windows Imaging Component は、プログレッシブ 画像デコード、拡張 PNG 機能、 GIF メタデータ、 APPn セグメントにまたがるメタデータのサポートを提供することで、標準のコンプライアンスを拡大します。 ( 「Windows 7 の WIC の新機能」を参照してください)。
Direct3D 11
Microsoft Direct3D 11 は、Direct3D 10 パイプラインの機能を拡張し、Windows 7 ゲームとハイエンド 3D アプリケーションに、今後の世代の GPU とマルチコア CPU への効率的で堅牢でスケーラブルなアクセスを提供します。 Direct3D 10 の機能に加えて、Direct3D 11 にはいくつかの新機能が導入されています。
ジオメトリサーフェスと高次サーフェスをテセレーションして、パッチおよびサブ区分サーフェスリプレゼンテーションでスケーラブルで動的なコンテンツをサポートできるようになりました。
複数の CPU コアから使用可能な並列処理能力を十分に活用するために、マルチスレッドは、アプリケーション、ランタイム、ドライバーの呼び出しを複数のコアに分散することで、フレームあたりの潜在的なレンダリング呼び出しの数を増やします。 さらに、リソースの作成と管理はマルチスレッド使用用に最適化されており、ストリーミング用の動的テクスチャ管理をより効率的に行うことができます。
Direct3D 11 用に新しい汎用コンピューティング シェーダーが作成されました。 既存のシェーダーとは異なり、これらはプログラミング可能なパイプラインの拡張機能であり、CPU に関係なく、アプリケーションが GPU 上でより多くの作業を完全に実行できるようにします。 Direct3D 10 で導入された DrawAuto は、コンピューティング シェーダーと対話するように拡張されました。
高度なシェーディング言語 (HLSL) では、特殊化の複雑さを向上させるためのシェーダーでの動的リンケージの限られた形式や、クラスやインターフェイスなどのオブジェクト指向プログラミングコンストラクトなど、いくつかの改善が行われています。 ( 2009 年 3 月の DirectX SDK の新機能に関するページを参照してください)。
Direct3D 10 の機能強化
Direct3D 10 には、プログラミング可能なシェーダー ステージと、固定関数ステージを初期化するための不変状態オブジェクトを備えた再設計されたグラフィックス パイプラインが含まれています。 状態オブジェクトは、必要な状態変更の数を最小限に抑えることで、パイプラインを簡略化し、パフォーマンスを向上させます。 シェーダー ステージのプログラミング機能により、シェーダー命令の無制限、一般化されたシェーダー リソース、整数とビットごとの計算をサポートする高度なシェーディング言語拡張機能が提供されるようになりました。
また、パイプラインにはジオメトリ シェーダー ステージも導入されています。これにより、CPU から GPU に完全に作業がオフロードされます。 この新しいステージを使用すると、ジオメトリを作成し、データをメモリにストリーム配信し、CPU 操作なしでジオメトリをレンダリングできます。
その他のいくつかの機能強化は、パフォーマンスを向上させるために特別に設計されています。 述語レンダリングでは、オクルージョン カリングを実行して、レンダリングされるジオメトリの量を減らします。 インスタンス化 API を使用すると、類似オブジェクトの複数インスタンスを描画することで、GPU に転送する必要があるジオメトリの量を大幅に削減できます。 テクスチャ配列を使用すると、GPU は CPU 介入なしでテクスチャ スワップを実行できます。
Direct3D 10 と Direct3D 11 には、これらの API を対象にできる構成の色域を拡張するために、いくつかの追加が行われています。 Windows Advanced Rasterization Platform (WARP) は、Direct3D 10 用の高速でマルチコアのスケーラブルな CPU レンダリングを実装し、グラフィックス ハードウェアのないシステムでフル機能のグラフィックス レンダリングを可能にします。 Direct3D 10 Level 9 と呼ばれる新しい "機能レベル" の追加により、Direct3D 10 と Direct3D 11 API は Microsoft Direct3D 9 クラスのハードウェアを駆動でき、Direct3D 10 または Direct3D 11 アプリケーションが市場のほぼすべてのコンピューター システムを対象とする構成の数を増やすことができます。 ( 「Direct3D 10 Graphics」を参照してください)。
DirectX/GDI の相互運用性
Windows Vista では、DirectX と GDI の両方を使用して共有サーフェイスにレンダリングするアプリケーションの動作は、DWM がオンかオフかによって異なります。 さらに、DWM がオンの場合、DirectX と GDI の両方を使用するアプリケーションは、Windows Vista では Windows XP の場合とは動作が異なります。 これにより、Windows Vista でアプリケーションを実行するときに多くの ISV で DWM が無効になり、一貫した動作が保証されました。 Windows 7 の DirectX の機能強化により、アプリケーションは DWM を無効にせずに DirectX と GDI を自由に混在させることができます。 Windows 7 では、より効率的な Direct3D 10 API を利用することで、DirectX と GDI の間の相互運用を必要とするシナリオのパフォーマンスも向上しています。 ( 「Direct2D と GDI 相互運用の概要」を参照してください)。