DXUT プログラミング ガイド

DirectX ユーティリティ ライブラリ (DXUT) は、Direct3D のチュートリアルとサンプルのほとんどで使用されるフレームワークであり、Direct3D 9 と Direct3D 10 API の上に構築されています。その目的は、Direct3D のサンプル、プロトタイプ、ツールを作成するほか、プロフェッショナルなゲームをより堅牢かつ簡単にビルドできるようにすることです。それにより、Windows と Direct3D API の一般的な使用方法が簡略化されます。

プログラマがウィンドウの作成、デバイスの作成、Windows メッセージの処理、デバイス イベントの処理などのよくある側面のコード作成とデバッグに費やす時間の短縮に役立つように設計されたレイヤーです。

機能と制限

DXUT は次のような多くのタスクを支援します。

  • ウィンドウの作成
  • Direct3D デバイスの選択
  • Direct3D デバイスの作成
  • デバイス イベントの処理
  • ウィンドウ イベントの処理
  • ウィンドウ表示モードと全画面モードの切り替え

DXUT は、Direct3D 9 と Direct3D 10 の両方で機能します。DXUT の上に構築したアプリケーションでは、これらの API のいずれかまたは両方を簡単に利用できます。DXUT によってシステム上の Direct3D 10 デバイスが検出され、アプリケーションで Direct3D 9 と Direct3D 10 の両方がサポートされている場合は、既定は Direct3D 10 になります。アプリケーションで Direct3D 10 のみがサポートされているが、Direct3D 10 デバイスが見つからない場合は、DXUT からエラーが返されます。

また、DXUT には、IME 対応の編集ボックス、単純なカメラの種類などの追加クラス、高分解能タイマー クラスなど、一連のテクスチャー GUI コントロールが含まれています。DXUT はモジュール式に設計されているため、アプリケーションで DXUT 機能のすべてまたは必要な部分だけを使用できます。このプログラミング ガイドの残りの部分では、これらの手順のそれぞれを詳細に扱い、アプリケーションで各手順の制御または置き換えに利用可能な選択肢を見ていきます。

使いやすさのために、DXUT では、単一のデバイスにアタッチされた単一のウィンドウのみがサポートされています。複数のデバイスを同時に使用する必要や、複数の Direct3D ウィンドウを表示する必要がある高度なアプリケーションは、DXUT ではサポートされません。一般的なほとんどのアプリケーションでは、DXUT を使用できます。

DXUT を使用した Main 関数の例

次に、DXUT を使用したアプリケーションの main 関数の例を示します。


INT WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, INT )
{
    // Set Direct3D 9 callbacks
    DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );
    DXUTSetCallbackD3D9DeviceCreated( OnD3D9CreateDevice );
    DXUTSetCallbackD3D9DeviceReset( OnD3D9ResetDevice );
    DXUTSetCallbackD3D9FrameRender( OnD3D9FrameRender );
    DXUTSetCallbackD3D9DeviceLost( OnD3D9LostDevice );
    DXUTSetCallbackD3D9DeviceDestroyed( OnD3D9DestroyDevice );
    
    // Set Direct3D 10 callbacks
    DXUTSetCallbackD3D10DeviceAcceptable( IsD3D10DeviceAcceptable );
    DXUTSetCallbackD3D10DeviceCreated( OnD3D10CreateDevice );
    DXUTSetCallbackD3D10SwapChainResized( OnD3D10ResizedSwapChain );
    DXUTSetCallbackD3D10FrameRender( OnD3D10FrameRender );
    DXUTSetCallbackD3D10SwapChainReleasing( OnD3D10ReleasingSwapChain );
    DXUTSetCallbackD3D10DeviceDestroyed( OnD3D10DestroyDevice );
    
    // Set the generic callback functions
    DXUTSetCallbackDeviceChanging( ModifyDeviceSettings );
    DXUTSetCallbackMsgProc( MsgProc );
    DXUTSetCallbackFrameMove( OnFrameMove );

    // TODO: Perform any application-level initialization here
    
    // Initialize DXUT and create the desired Win32 window and Direct3D device for the application    
    DXUTInit( true, true ); 
    DXUTCreateWindow( L"TestApp" );
    DXUTCreateDevice( true, 640, 480 );

    // Start the render loop
    DXUTMainLoop();

    // TODO: Perform any application-level cleanup here
    
    return DXUTGetExitCode();
}

次の手順

DXUT は、このプログラミング ガイドと、対の「DXUT リファレンス」で説明されています。

表示: