address:書籍「WiiRemoteプログラミング」(2009年7月末刊行)の特設サイトもどうぞ。人のユーザが現在オンラインです。†mixiのDirectXコミュで「DirectXって何ですか?」というトピックがあったのに、全く的を得た回答をしている人がいなかったので、ちゃんと書いてみようと思いました。Please!このページはDirectX関係のプログラミングに関するメモ。†DirectXは(旧来の手法に比べて)ゲーム向きの2Dグラフィックスや3D、サウンドや通信を高速に制御する手法を提供しています。インストールするべきものはSDKとランタイムがあり、遊ぶだけ、使うだけの人はランタイムだけでかまいません。WindowsXPなどには最初からDirectX8がインストールされていますので、それをつかっているWindowsMediaPlayer?などは皆が気がつかないうちに使っているというわけです。3DシューティングゲームなどはDirectX9など最新のランタイムが必要ですが、その場合は起動時にエラーが出ます。「インストールすると速くなる」というのはATIやnVIDIAが提供するビデオカードのドライバー類のことです。最新のDirectXが出るとそれに合わせたドライバーがダウンロードで提供されます。MayaやMaxでも速くなることは速くなりますが、多くの場合、レンダリングはCPUを使っていますので、マウスで操作するときだけDirectXという場合も多くあります。よって最終的なレンダリング速度が飛躍的に高くなるということではありません(もちろん、VRAMが多くなったりして、ないよりはよいです)。DirectXのコミュなので、ちょっとだけ深い話をしますが、これは多くのモデラーが各々独自のソフトウェアレンダラーを使っているからだと思われます。同じアルゴリズムをDirectXに移植できれば速くなるのですが、リアルタイム用のハードウェアレンダリングは、メモリや速度に制限されないソフトウェアレンダリングのアルゴリズムとは設計思想が一致しないこともあり、また各ハードウェアで対応している機能に違いがあるのでなかなかうまくいきません。DirectXで恩恵を受ける、もしくは違いを目で見て取れるモデラー環境としては「Metasequoia」(フリーソフト)が挙げられます。†WinGとGDIに代わる、VRAMをAPI経由で「直接(Direct)制御」することを目的としたDirectShowを中心としたAPI群だった。「X」というのはDirect〜の後ろにDraw、Sound、Imputといったものがくるという意味でXだったはず。†OpenGL.DLLがWinNT4.0に配布され、3DグラフィックスがWindowsプラットフォームで実現可能になった。DirectX2でも3Dグラフィックスが扱えるようになったが、時代はGWS+OpenGLであり、あまり注目されてはいなかった。このバージョンでDirectX3Dが実装されており、イミディエイトモード(IM)とお任せモードであるリテインドモード(RM)があったようだ。時代はWin3.1からWindows95に移行した直後で、DirectXの知名度はそれほど高くはなかったが、確実にユーザ数は増えていた。†DirectX4は存在しないが、この間にRenderWare?などが候補に上がっていたらしい。運命の分かれ道である。DirectXが3Dグラフィックス用APIとして一躍有名になったバージョン。日本語ドキュメントも初めて翻訳された。Meltdownイベントなどが開催され一気に知名度が上がる。この頃はDirectXを使う、野武士プログラマが多く、非常に楽しかった時期でもある。動的な頂点と直接制御のライティングをサポートするIMと、当時業界最大かつマイクロソフトグループだったSoftimageから書き出し可能なXファイルで構築可能な使いやすいRMが両方あり、パフォーマンスや映像クオリティ、プログラミング難易度が大きく違っていた。描画コマンドはOpenGLを意識してBegin/End、DrawPrimitive?、DrawIndexedPrimitive?が追加された。ハードウェアによるアクセラレーションもこのころからの流行である。Dreamcastプラットフォーム用WindowsCEにも採用されているが、ほとんどのタイトルがWindowsCEそのものを採用していない(知っている限りでは国産タイトルはハドソンの「北へ。SEGAのDC開発環境にはDirectXのAPIプログラミング手法はかなり生かされており、追従するPS2時代のAPIプログラミング環境とは大きく異なっていることを記しておく。†1998-99年頃。DirectX6.1でDirectMusic?等のMIDI機能が一気に増えて、APIも整理された。3DはVertexBuffer?(頂点バッファ)がサポートされた。多くの新機能はCPU側での処理。&Ligting=変形処理及び光源処理)をサポートした。これによりGeForece2以降のサポートハードウェアでは動的頂点などのハードウェアアクセラレーションでポリゴン数が多いモデルなどで劇的なパフォーマンスを見せるようになり、ハードウェアはポリゴン数を誇るのが潮流になった。実際にはT&Lは人物などのリアルタイムスキンデフォメーションやフェイス(顔面)アニメーションに有効な技術であったといえる。動的ライティングの高速化により、FPS(一人称視点シューティングゲーム)の画質も一気に向上した。大きな変化を遂げたバージョン。PlayStation2のエモーションエンジン(EE)とグラフィックスシンセサイザ(GS)の登場により、マルチコアハードウェア側でグラフィックス処理を行なう方式が脚光を浴びる。グラフィックスプロセッサ(GPU)という言葉もこのあたりから浸透し始める。トゥーンシェーダーや様々なレンダリングエフェクト、スキン&ボーンなどの動的頂点をリアルタイムグラフィックスに実装するのが流行ったおかげで、DirectXにもさまざまなハードウェア処理が求められるようになる。DirectX7でもアセンブラにより特殊なレンダリングが実現できたが、基本的には固定パイプラインであり、DirectX8世代のハードウェアではカスタマイズ可能なパイプラインが採用されたが、さらに柔軟なAPI提供が求められていた。動的頂点に寄与する「頂点シェーダー」と、テクスチャやラスタライズに寄与する「ピクセルシェーダー」という形でカスタムパイプラインが利用できるようになった。この頃、マイクロソフトはXBoxをラウンチ直前でありDirectX8は大きな機能強化というよりも、DirectXで育てたAPI技術を100%生かせるようなハードウェアプラットフォームとしてのXBOXを立ち上げたに過ぎない、という表現もできる。実際のところ、PCのように個々人の予算環境などでハードウェア環境が星の数ほどありえるプラットフォームでは、アプリケーション開発者、特に日本のゲーム市場のように品質にうるさいユーザ&開発者を相手では浸透が難しい、というのは事実といえるだろう。その分、ハイパフォーマンス&固定のプラットフォームが提供できるXBOXはPCゲーム開発者にとっては安楽の土地であったと言えるかもしれない。DirectX8.0,8.0a,8.1とあるが、WindowsXPにはDirectX8.1のランタイムDLLが標準添付されており、最も利用者人口の多いDirectXと言っても過言ではないのではないだろうか。このバージョンで、当初、「グラフィックスハードウェアを直接制御する」目的であったDirectXはDirectDraw?を完全に整理し、DirectGraphics?となった。Language)がサポートされた。上位というのはプログラミングが難しい、という意味ではなく、ハードウェア層から数えた「上位」の言語でプログラミングできる言語という意味。C言語に近い(C++言語ではない)記述のテキストファイルを書き、実行時に実装ハードウェアとAPIバージョンに合わせたマイクロコードにコンパイルしてGPU側に送られる。同様の言語環境をnVIDIAはCgとして提供している。言語仕様はHLSLに非常に近いが、OpenGLと各社モデラーとの親和性を重視している。DirectX9は息が長く、2002年の登場から、SummerUpdate2003、SummerUpdate2004、OctoberUpdate2004、DecemberUpdate2004、FebraryUpdate2005、AprilUpdate2005、JuneUpdate2005、AugustUpdate2005、October2005、DecemberUpdate2005などほぼ3-4ヵ月毎の更新を行なっている(ランタイムもDirectX9cなどバージョンが上がっているが、ユーザ側は一度MediaPlayer?などのためにDirectX9をインストールしていればWindowsUpdate?で自動更新されているはずである)。対応シェーダモデルはShader2.0〜3.0であるが、短期間に行なわれたSDKの激しいアップデートについていけなくなった一般開発者も多いと思われる。DirectShowは一部のソースが公開され、サポート外になった。他にもD3DではRMと固定機能レンダリングがなくなったり、と整理されたものは多い。Foundation(WPF)というフレームワークでデスクトップGUIやグラフィックスプログラムを書くことになる。そこで、旧来のDirectXは今までのような「ゲーム用APIとドライバ・ミドルウェア」という位置づけからOSのインフラ、エクスペリエンス(体験)を実現する存在に大きく生まれ変わることになる。SDKはMSDN内には既に公開されており(2006年2月現在)、WindowsVista?には標準搭載されるバージョンであるが、技術的な革新が大きく、どのように移行するのかについては話題が尽きない。LinksにあるGDNやMSエバンジェリスト、マネージドコード関連の情報を追ったほうがよい。†このドキュメントは無保証です。間違いも沢山あると思います。応援・ご指摘はお気軽にお寄せください。page.DirectXの項、WinXはWinGのことかな?と思いました。(水)おお、ご指摘有難うございます。通りで検索しても見つからないはずだ...。