Hiroyuki Kawanishi (川西 裕幸)
マイクロソフト株式会社
テクニカル エバンジェリスト
2005 年 6 月 27 日
DirectX 9.0 には最先端のテクノロジが数多く盛り込まれています。例えば Graphics では、新しいバージョンの頂点シェーダやピクセル シェーダや HLSL が、また DirectShow では新しい Video Mixing Reader 9 などがあります。そして、 C# や Visual Basic .NET から利用可能な Managed DirectX もあります。
この連載では Graphics を中心にサンプル コードやヘルプからだけでは見逃しがちな、これらの最先端のテクノロジを毎月紹介していきます。
今回は、ピクチャボックスに表示した複数のジオメトリ オブジェクトをマウスでクリックすると、クリックされたオブジェクトだけが別のピクチャボックスに表示されるサンプルを紹介します。
今回は、Windows フォーム上のピクチャ ボックスに 3D メッシュを描画する方法を紹介します。ピクチャ ボックスに描画すれば、ボタンのような他の .NET Framework コンポーネントと一緒に表示させることができるので便利です。また、System.Windows.Forms.ColorDialog 使って3D メッシュの色を指定できるようにします。
Managed DirectX を使う場合、レンダーターゲットとして Windows フォームを使うのが最も効率的です。今回は、Windows フォームを使って最も単純にティーポットを描画 (回転も!) する C# のコードを解説します。
DirectX 9.0 SDK Update (Summer 2004) をインストールするとウィザードが使えないために、このコラム用に作った以前の C# サンプルコードがビルドできません。今回はその対策方法を紹介します。
今回は 3D ボリューム テクスチャを (ファイルからではなく、プログラムによって) 手続き的に生成し、ジオメトリに適用します。
前回は、頂点単位のアニメーションを行いましたが、今回はキューブマップを使った環境マッピングを紹介します。エフェクト内でテクスチャを取り扱うためにテクスチャとサンプラを作成し、シェーダ内でそのテクスチャを参照します。キューブ環境マップの参照に必要な反射ベクトルの計算も行います。
前回は、頂点単位のライティング計算を行いましたが、今回は頂点の位置を操作して時系列による頂点単位のアニメーション (モーフィング) を行います。
前回まで HLSL を描画する C# アプリケーションの実装方法を紹介しました。今回からは、HLSL 自身の実装方法を紹介していきます。
エフェクト ファイルを読み込んで表示できる HLSL ビューアを C# で実装します。アプリケーション側での実装方法、特にセマンティックと注釈 (annotation) の扱い方に焦点を当てて解説します。
今回は、BasicHLSL.fx に使われているエフェクト フレームワークと HLSL について解説します。DX9 では、エフェクト ファイルの中で HLSL (High Level Shader Language) が使えるよう拡張されています。
今回は、先の X File Viewer をベースに、C++ の BasicHLSL サンプルを C# に移植して、C# で HLSL およびエフェクト ファイルを使って描画するための基本的な実装方法を紹介します。
カラー パレットを使って色を変更して色をアニメーションさせる方法は、ディスプレイに 16 色・256 色しか表示できなかった時代からよく使われていた古典的な手法で、Managed DirectX の DirectDraw のサンプルにも入っています。今回は System.Drawing.Bitmap クラスと Direct3D.Sprite クラスを使ってこれを実装します。
今回は、Direct3D.Sprite クラスを使った簡単な 2D テクスチャ アニメーションの作り方を紹介します。このサンプルでは Direct3D.Sprite を使って、DirectDraw の SpriteAnimate サンプルと同様の表示をするように実装します。
X ファイル ビューア シリーズの最後として、複数アニメーションの切り替えが可能な X ファイル ビューアの C# サンプルを紹介します。
DirectX 9.0 SDK Update (Summer 2003) では、Managed DirectX のアニメーション関連の API が変更になりました。そのため、先のサンプルコードはビルドできません。複数アニメーションへの対応は次回に回して、今回はこのSDK Update に対応したスキンメッシュの C# サンプルの改訂版を紹介することにします。
今回は Managed DirectX を使ってスキンメッシュ アニメーションを表示する X ファイル ビューアの C# サンプルを紹介します。C++ の SkinnedMesh サンプルでは、複数の方法でスキンメッシュを実装していますが、このサンプルでは最も単純な (頂点シェーダも行列インデックスも使わない) 頂点ブレンディングを使った実装を行います。
今回は Managed DirectX を使った X ファイル アニメーション ビューア の C# サンプルを紹介します。これは、X ファイルをロードし、X ファイルに格納されているメッシュを、一緒に格納されているアニメーション データを使ってアニメーションします。アニメーションが格納されていない X ファイルの場合は前回同様メッシュだけが表示されます。
今回は Managed DirectX を使って、X ファイルをロードし、(テクスチャが指定されていれば) テクスチャを張って描画する X ファイル ビューアの C# サンプル コードを紹介します。
今回は Managed DirectX から頂点シェーダを使う C# のサンプルを紹介し、Managed DirectX での頂点シェーダの使い方、頂点宣言の方法、頂点バッファの書き込み、頂点ストリームの設定、日本語表示などを解説します。
今回は、Managed DirectX による Direct3D の C# を使った実装を見ていきます。 AppWizard を使ってコードを作成し、Managed DirectX に特徴的な部分を紹介します。また、AppWizard のコードに、マウスによる 3D 操作の機能を追加します。
今回は、C# から Managed DirectX を使ってビデオを再生する方法を、DirectX 9.0 SDK に入っているサンプルをベースに紹介します。Microsoft.DirectX.AudioVideoPlayback 名前空間の Video クラスを使えば、Play、Pause、Stop といったメソッドを呼び出すだけで、ビデオを再生・操作できます。
今回は Managed DirectX でのみサポートされている DirectDraw について Visual Basic .NET をベースに紹介します。DirectX 9.0 SDK には、C# と Visual Basic .NET のサンプル コードも入っています。さらに AppWizard を使った、C# と Visual Basic .NET の DirectDraw アプリケーションのスケルトン作成も可能になっています。
この文章では、日本語ドキュメントとシェーダ デバッガのインストールと使い方を説明します。DirectX 9.0 SDK には、日本語ドキュメントとシェーダ デバッガ (DirectX Extensions for Visual Studio .NET) が含まれていますが、デフォルトではどちらもインストールされません。