コンピューティングにおいて、D3DX (Direct3D Extension) は、MicrosoftのDirect3Dグラフィックス API を補完するために作成された高レベルAPIライブラリです。D3DX ライブラリはDirect3D 7で導入され、その後Direct3D 9で改良されました。ベクトル、行列、色に関する一般的な計算、ルックアット行列と投影行列の計算、スプライン補間、および 3D グラフィック プログラミングに使用されるシェーダーのコンパイルやアセンブル、圧縮されたスケルタル アニメーション ストレージ、行列スタックなどのより複雑なタスクを実行するためのクラスを提供します。接線空間計算、メッシュの単純化、事前計算された放射輝度転送、頂点キャッシュとの親和性とストリップの並べ替えの最適化、3D テキスト メッシュのジェネレーターなど、3D メッシュに対する複雑な操作を実行する関数がいくつかあります。2D 機能には、スクリーン空間の線、テキスト、およびスプライト ベースのパーティクル システムを描画するためのクラスが含まれます。空間関数には、さまざまな交差ルーチン、重心座標との変換、境界ボックスおよび球体ジェネレーターが含まれます。
D3DX ライブラリには、ゲームなどのほとんどの 2D/3D アプリケーションに共通する処理を実行するための、事前に記述されたルーチンが含まれています。Direct3D API は比較的低レベルであるため、D3DX ライブラリの使用は通常、はるかに簡単です。
2012年にマイクロソフトは、D3DX 9、D3DX 10、D3DX 11がWindows 8 SDKで廃止されることを発表しました[1] 。また、 XNAなどの他の開発フレームワークも廃止されます。シェーダー効果、テクスチャ管理、ジオメトリ最適化、メッシュモデルは、 GitHubを通じて公開された個別のソースとして利用できます[2]。ベクトルや行列などのD3DXの数学的構成要素は、XNAMathと統合されてDirectXMath [3]となり、球面調和関数の計算は別のソースとして提供されます[2] 。
インターフェース
D3DX ライブラリはCOM オブジェクト指向プログラミングモデルに従います。機能にはC++のようなインターフェイスを使用してアクセスします。
ID3DXエフェクト
ID3DXEffect インターフェイスは、FX シェーダー (.fx) のコンパイルとバインドに使用されます。名前付きシェーダー パラメーターのハードウェア定数レジスタ、パラメーター プールへの自動マッピング、使用可能なサンプラーへのテクスチャのマッピング、「テクニック」の指定、レンダリング状態の変更をサポートします。
ID3DXフォント
ID3DXFont インターフェイスを使用して 2D テキストを描画できます。テキストの 3D メッシュを作成する D3DXCreateText も参照してください。
ID3DXライン
ID3DXLine インターフェイスは、パターン付きのアンチエイリアスされたスクリーン空間の線を描画するために使用できます。
ID3DXメッシュ
ID3DXMesh インターフェイスは、メッシュの保存と、頂点キャッシュとの親和性およびストリップの並べ替えのためのメッシュの最適化に使用されます。D3DX の一部の関数は、このインターフェイスで動作します。例としては、法線や視差マッピングなどの効果のための接線空間フレームを作成するための D3DXComputeTangentFrame があります。このクラスの派生クラスは、ジオメトリの簡略化を実行できる ID3DXPMesh です。
ID3DXPRTエンジン
これは、事前計算されたグローバル イルミネーションとソフト アンビエント ライティングに使用される球面調和照明に似た手法である、 事前計算された放射輝度転送に使用されます。
ID3DXスプライト
ID3DXSprite インターフェイスは、コンピュータ グラフィックスでスプライトと呼ばれる 2D イメージを画面に描画するために使用されるC++ クラスです。DirectX 7では、これは通常、非推奨となったDirectDraw API を使用して実行されていました。
通常、プログラマーは、ID3DXSprite オブジェクトの Begin() メソッドを呼び出して 2D 描画のレンダリング状態とワールド変換を設定し、Draw() メソッドを呼び出して描画するリストにテクスチャを追加し、最後に End() メソッドを呼び出して画像を画面に描画し、元のグラフィックス状態を復元するだけで済みます。
D3DXSprite に対する一般的な批判は、速度が遅いということでしたが、この問題はDirect3D 9で解決されました。
機能
D3DXComputeTangentFrame
法線/バンプ マッピング、視差マッピング、異方性ライティング モデルなどの効果に使用されるメッシュの接線空間フレームを計算します。接線空間の不連続点にある頂点を複製して処理し、ヘアリー ボールの問題を解決します。面の逆 UV 巻き上げは処理されないため、ミラー テクスチャ マッピングを持つモデルでは、このためライティングの問題が発生する可能性があります。
ダイレクト3D10
Direct3D 10 用の D3DX10 ユーティリティ ライブラリは、機能的には Direct3D 9 用の D3DX に似ており、同じ D3DXMath ライブラリとブロック圧縮 (BC1-BC5) ソフトウェア コーデックが含まれていました。主な違いは、Effects for Direct3D 10 が OS コンポーネントになったこと、HLSL コンパイラが別の D3DCompile DLL に移動されたこと、テクスチャ イメージの読み込みと保存のコードがWindows Imaging Componentを利用したことです。WIC の使用に移行した結果、D3DX10 は、D3DX でサポートされていたTruevision TGA、RGBE イメージ形式、またはPortable PixMapファイル形式をサポートしませんでした。また、D3DX10 には、UVAtlas isocart テクスチャ アトラスやPrecomputed Radiance Transfer APIも含まれていませんでした。
D3DX10のすべてのバージョンはMicrosoft Docsに従って非推奨となっています。[3]
ダイレクト3D11
Direct3D 11 用の D3DX11 ユーティリティ ライブラリは、D3DX10 の縮小版でした。WIC を使用したテクスチャ イメージの読み込みと保存のコードと、ブロック圧縮 (BC1-BC7) ソフトウェア コーデックが含まれていましたが、それ以外はほとんど含まれていませんでした。
D3DX11のすべてのバージョンはMicrosoft Docsに従って非推奨となっています。[3]
D3DX9、D3DX10、D3DX11のほとんどの機能は、Direct3D 11以降のオープンソースプロジェクトに移行されています:DirectXMath、[4]、 DirectX Tool Kit、[5]、 DirectXTex、[6]、 DirectXMesh、[7]、UVAtlas [8] 。DXUT [9]と Effects (FX11) [10]ランタイムのオープンソースバージョンも利用可能です。
ダイレクト3D12
DLLベースのD3DX12ユーティリティライブラリはありません。ただし、Direct3D 12の基本ヘルパー用のD3DX12ユーティリティヘッダー(すべてインラインC++コード)はMicrosoft Docs [11]に文書化されており、GitHub [12]で公開されています。これには、数学、スプライト、フォントレンダリング、3Dシェイプ、メッシュ、テクスチャロードなどの機能は含まれていません。不足している機能を提供する Direct3D 12用のDirectXツールキット[13]があります。
参考文献
- ^ 「D3DX 関数 (Direct3D 11 グラフィックス)」。Microsoft。
- ^ ab 「D3DX なしでの生活」。MSDN。2013 年 8 月 20 日。
- ^ abc Microsoft. 「DirectX SDK はどこにありますか?」. Microsoft . 2020 年6 月 28 日閲覧。
- ^ 「DirectXMath」。GitHub。2022年2月17日。
- ^ 「DirectX Tool Kit for DX11」。GitHub。2022年2月18日。
- ^ 「DirectXTex テクスチャ処理ライブラリ」。GitHub。2022 年 2 月 16 日。
- ^ 「DirectXMesh ジオメトリ処理ライブラリ」。GitHub。2022 年 2 月 18 日。
- ^ 「UVAtlas isocart テクスチャアトラスライブラリ」。GitHub。2022年2月15日。
- ^ 「DXUT for Direct3D 11」。GitHub。2022年2月12日。
- ^ 「Direct3D 11 のエフェクト」。GitHub。2022 年 2 月 12 日。
- ^ Microsoft. 「D3D12 のヘルパー構造と関数」。Microsoft 。2020 年6 月 28 日閲覧。
- ^ 「D3DX12」。GitHub。
- ^ 「DirectX Tool Kit for DX12」。GitHub。2022年2月18日。
外部リンク
- Microsoft Docs の D3DX ドキュメント
- Microsoft Docs の D3DX10 ドキュメント
- Microsoft Docs の D3DX11 ドキュメント
- D3DX なしでの生活 (旧 MSDN ブログ)
