0001: //-------------------------------------------------------------
0002: // File: main.h
0003: //
0004: // Desc:パララクスマッピング
0005: //-------------------------------------------------------------
0006: #pragma once
0007: 
0008: 
0009: 
0010: //-------------------------------------------------------------
0011: // 定義や定数
0012: //-------------------------------------------------------------
0013: // 現在の入力データを保存する構造体
0014: struct UserInput
0015: {
0016:     BOOL bRotateUp;
0017:     BOOL bRotateDown;
0018:     BOOL bRotateLeft;
0019:     BOOL bRotateRight;
0020:     BOOL bZoomIn;
0021:     BOOL bZoomOut;
0022: 
0023:     BOOL sw;
0024: };
0025: 
0026: 
0027: 
0028: 
0029: //-------------------------------------------------------------
0030: // Name: class CMyD3DApplication
0031: // Desc: アプリケーションのクラス
0032: //-------------------------------------------------------------
0033: class CMyD3DApplication : public CD3DApplication
0034: {
0035:     enum{
0036:         Parallax = 0,
0037:         Bump,
0038:         SHADER_TYPE_MAX,
0039:     };
0040: 
0041:     int                     m_iShader;      // シェーダの切り替え
0042: 
0043:     LPDIRECT3DTEXTURE9      m_pHeightMap;   // 高さマップ
0044:     LPDIRECT3DTEXTURE9      m_pNormalMap;   // 法線マップ
0045:     LPDIRECT3DVERTEXDECLARATION9    m_pDecl;// 頂点宣言
0046:     CD3DMesh                *m_pMesh;       // ティーポットのメッシュ
0047:     CD3DMesh                *m_pMeshBg;     // 背景のメッシュ
0048: 
0049:     // シェーダ
0050:     LPD3DXEFFECT            m_pEffect;      // エフェクト
0051:     D3DXHANDLE              m_hTechnique;   // テクニック
0052:     D3DXHANDLE              m_hmWVP;        // ローカル-射影変換行列
0053:     D3DXHANDLE              m_hvLightDir;   // ライトの方向
0054:     D3DXHANDLE              m_hvColor;      // 頂点色
0055:     D3DXHANDLE              m_hvEyePos;     // 視点の位置
0056:     D3DXHANDLE              m_htDecaleTex;  // 模様のテクスチャ
0057:     D3DXHANDLE              m_htHeightMap;  // 高さマップ
0058:     D3DXHANDLE              m_htNormalMap;  // 法線マップ
0059:     
0060: 
0061:     // 通常の座標変換行列
0062:     D3DXVECTOR4             m_vFromPt;
0063:     D3DXMATRIX              m_mView;
0064:     D3DXMATRIX              m_mProj;
0065: 
0066:     BOOL                    m_bLoadingApp;  // ロード中?
0067:     CD3DFont*               m_pFont;        // フォント
0068:     UserInput               m_UserInput;    // 入力データ
0069: 
0070:     FLOAT                   m_fWorldRotX;   // X軸回転
0071:     FLOAT                   m_fWorldRotY;   // Y軸回転
0072:     FLOAT                   m_fViewZoom;    // 視点の距離
0073: 
0074: protected:
0075:     virtual HRESULT OneTimeSceneInit();
0076:     virtual HRESULT InitDeviceObjects();
0077:     virtual HRESULT RestoreDeviceObjects();
0078:     virtual HRESULT InvalidateDeviceObjects();
0079:     virtual HRESULT DeleteDeviceObjects();
0080:     virtual HRESULT Render();
0081:     virtual HRESULT FrameMove();
0082:     virtual HRESULT FinalCleanup();
0083:     virtual HRESULT ConfirmDevice( D3DCAPS9*, DWORD, D3DFORMAT );
0084: 
0085:     HRESULT RenderText();
0086: 
0087:     void    UpdateInput( UserInput* pUserInput );
0088: public:
0089:     LRESULT MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
0090:     CMyD3DApplication();
0091:     virtual ~CMyD3DApplication();
0092: };
0093: 
0094: