Dirext3DX UtilityLibrary を使う 2 ベースプロジェクト

ではまず、このプロジェクトファイルをダウンロードして展開してください。

dolbase.lzh

いろいろソースが混じっていますが、使用するソースは dolphin.cpp のみ。
これはDirectX7実践プログラムのDOLPHINXというプロジェクトから不必要なものを削除したもの。
ビルドしてエラーが起こる場合はディレクトリの設定を見直すこと。

なお、これはDirectX7を使用するので、5では動かない。

ソースを見ると、以下のとおり。
d3dapp.h などを見るとわかるが、viwmatrix, rotatematrix など必要なオブジェクトはすべて定義されている。
基本的にはIMの基礎知識がなければ使うのは難しいかもしれない。
 

//-----------------------------------------------------------
// File: dolphin
// Desc: Sample of d3dutil
// Note: This code uses the D3D Framework helper library.
//-----------------------------------------------------------
#define STRICT
#define D3D_OVERLOADS
#include
#include "D3DApp.h"
#include "D3DUtil.h"
#include "D3DMath.h"
#include "D3DTextr.h"
#include "D3DFile.h"
 
#define WATER_COLOR 0x00006688
 
//-----------------------------------------------------------
// クラス定義
//-----------------------------------------------------------
class CMyD3DApplication : public CD3DApplication
{
 public:
 HRESULT OneTimeSceneInit();
 HRESULT InitDeviceObjects();
 HRESULT DeleteDeviceObjects();
 HRESULT Render();
 HRESULT FrameMove( FLOAT );
 HRESULT FinalCleanup();
 
 CMyD3DApplication();
};
 
//-----------------------------------------------------------
// WinMain
//-----------------------------------------------------------
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
{
 CMyD3DApplication d3dApp;
 
 if( FAILED( d3dApp.Create( hInst, strCmdLine ) ) )
  return 0;
 
 return d3dApp.Run();
}
 
//----------------------------------------------------------
// コンストラクタ
//----------------------------------------------------------
CMyD3DApplication::CMyD3DApplication()
:CD3DApplication()
{
 // Override base class members
 m_strWindowTitle = TEXT("Dolphin: Blending Meshes in Real Time");
 m_bAppUseZBuffer = TRUE;
 m_bAppUseStereo = TRUE;
 m_bShowStats = TRUE;
 m_fnConfirmDevice = NULL;
 
 //ここで必要なオブジェクトを作成する
 
}
 
//----------------------------------------------------------
// 初期化
//----------------------------------------------------------
HRESULT CMyD3DApplication::OneTimeSceneInit()
{
 // ここで使用するオブジェクトの初期化をする
 return S_OK;
}
 
//----------------------------------------------------------
// メッシュ合成
//----------------------------------------------------------
VOID BlendMeshes( D3DVERTEX* pDstMesh, D3DVERTEX* pSrcMesh1,
D3DVERTEX* pSrcMesh2, DWORD dwNumVertices, FLOAT fWeight )
{
 // ここでオブジェクトの変形を計算する
}
 
//----------------------------------------------------------
// FrameMove() フレームを動かす
//----------------------------------------------------------
HRESULT CMyD3DApplication::FrameMove( FLOAT fTimeKey )
{
 // ここにマトリクスの計算を入れる
 
 return S_OK;
}
 
//---------------------------------------------------------
// 描画
//---------------------------------------------------------
HRESULT CMyD3DApplication::Render()
{
 
 // Clear the viewport
 m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,
 WATER_COLOR, 1.0f, 0L );
 
 // ここに描画処理を入れる

 return S_OK;
}
 
//---------------------------------------------------------
// オブジェクトの初期化
//---------------------------------------------------------
HRESULT CMyD3DApplication::InitDeviceObjects()
{
 //ここでd3dオブジェクトの初期化をする
 return S_OK;
}
 
//---------------------------------------------------------
// オブジェクトの消去
//---------------------------------------------------------
HRESULT CMyD3DApplication::DeleteDeviceObjects()
{
 //ここでd3dオブジェクトの消去をする
 return S_OK;
}
 
//----------------------------------------------------------
// 後始末
//----------------------------------------------------------
HRESULT CMyD3DApplication::FinalCleanup()
{
 //ここですべての後始末をする
 return S_OK;
}