最終更新:2010-08-12 (木) 06:57:31 (4999d)  

DXUT
Top / DXUT

DirectX Utility Library

DirectX ユーティリティ ライブラリ (DXUT) は、Direct3D のチュートリアルとサンプルのほとんどで使用されるフレームワークであり、Direct3D 9?Direct3D 10? API の上に構築されています。

機能と制限

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 関数の例

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();
}