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