Object Class Library

講座で説明している DirectX9 Program を作成するための Object Class を提供します。
*.h と *.cpp をフォルダーに格納して、プロジェクトに組み込んで下さい。
ddutil, dxutil のソースコード
audio object class(Ver 1.0) のソースコード
myd3d object class(Ver 1.3) のソースコード

DirectX バージョンアップによる問題

DirectX のバージョンアップにより、そのままのソースコードではエラーになるケースが生じています。
特に多くの機能が網羅されているライブラリでは深刻で、そのまま組み込むことが難しくなってきました。
ライブラリから使用する Object のソースコードをメインファイルなどに直接組み込んで対処して下さい。
★DirectX9 の新しいバージョンでは、2Dグラフィックスは動かないかも知れません。

前田稔(Maeda Minoru)の超初心者のプログラム入門

ddutil, dxutil

  1. DirectX の Common に格納されていた Draw 関係の Object Class です。
    Vista 以降のOSでは動かないかも知れません。
  2. 主として、次の Class が定義されています。
        #define SAFE_DELETE(p)  { if (p) { delete (p);     (p)=NULL; } }
        CDisplay*   g_pDisplay    = NULL;
        CSurface*   g_pBmpSurface = NULL;
        
  3. CDisplay Class の基本的な使い方です。
        g_pDisplay = new CDisplay();
        if (FAILED(hr = g_pDisplay->CreateWindowedDisplay(hWnd,640,480)))
        {   ERMSG("Failed initializing DirectDraw");
            return hr;
        }
        if (FAILED(hr=g_pDisplay->CreateSurfaceFromBitmap(&g_pBmpSurface,"kishi.bmp",0,0)))
            return hr;
        if (FAILED(hr=g_pBmpSurface->SetColorKey(0)))   return hr;
        g_pDisplay->Clear(0);
        g_pDisplay->Blt(0,0,g_pBmpSurface,NULL);
        if (FAILED(hr=g_pDisplay->Present()))   return hr;
        SAFE_DELETE(g_pBmpSurface);
        SAFE_DELETE(g_pDisplay);
        

Audio Object Class

  1. Audio Object Class は、MIDI と WAVE を演奏する Object Class です。
    同時に MIDI と WAVE をミキシングしながら演奏することが出来ます。
  2. Audio Object Class の基本的な使い方です。
    MIDI も WAVE も使い方は同じです。
        Audio       App;
        App.Load("midi1.mid");
        App.Play();
        App.Stop();
        

MyD3D Object Class

  1. MyD3D(Direct 3D) Object Class は DirectX の3Dグラフィックスをまとめた Object Class で、主な機能は以下の通りです。
    1. 3Dデバイスを取得して、D3Dの描画環境を設定します。
      ウインドウモードとフルスクリーンモードの両方をサポートします。
    2. バックバッファのDCを取得して、直接バックバッファに描画する関数をサポートします。
    3. 画像のサイズに合わせたサーフェスを生成して画像を入力します。
      サーフェスを生成したときは、責任を持って開放して下さい。
      サーフェスは何枚でも生成することが出来ます。
    4. 3Dモデル(Xファイル)を入力して、メッシュを生成します。
      法線ベクトルが設定されていないモデルが指定されると、法線ベクトルを計算します。
    5. 標準的なマテリアルを設定するメンバ関数をサポートします。
    6. 標準的な光源を設定するメンバ関数をサポートします。
    7. メッシュの頂点座標の移動とブレンドを行うメンバ関数をサポートします。
    8. 3Dマトリックスの演算をするメンバ関数をサポートします。
    9. サーフェスに描画する画像(BMP,JPEG,GIF)を格納するために、一組の HBITMAP と HDC を定義しています。
      この HDC から描画するために、多彩なパラメータ形式の Show 関数を揃えました。
      その結果 DirectX の3D描画とサーフェスを使った2D描画を効果的に組み合わせることが簡単に出来るようになりました。
  2. MyD3D Object Class の基本的な使い方です。
    機能が大きくて、ここでは説明不可能なので、詳細は講座のページを参照して下さい。
    LPDIRECT3DDEVICE9(g_pDEV) は Class の Destructor で開放しています。
        MyD3D               *myd3d        = NULL;   // MyD3D Object Class
        LPDIRECT3DDEVICE9   g_pDEV        = NULL;   // 描写用デバイス
    
        myd3d= new MyD3D(g_hWnd);
        myd3d->InitD3D(&g_pDEV);
        SAFE_DELETE(myd3d);
        

前田稔(Maeda Minoru)の超初心者のプログラム入門