0001: // ----------------------------------------------------------------------------
0002: //
0003: // load.h - 全体的な定義
0004: // 
0005: // Copyright (c) 2002 IMAGIRE Takashi (imagire@gmail.com)
0006: // All Rights Reserved.
0007: //
0008: // ----------------------------------------------------------------------------
0009: #ifndef _LOAD_H
0010: #define _LOAD_H
0011: 
0012: #include <d3d8.h>
0013: #include <d3dx8.h>
0014: 
0015: // ----------------------------------------------------------------------------
0016: // モデル
0017: // ----------------------------------------------------------------------------
0018: 
0019: // ----------------------------------------------------------------------------
0020: // 頂点の定義
0021: // ----------------------------------------------------------------------------
0022: typedef struct {
0023:     float x,y,z;
0024:     float nx,ny,nz;
0025:     float tu0,tv0;
0026: //  float tu1,tv1;
0027: }D3D_CUSTOMVERTEX;
0028: #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1/* | D3DFVF_TEX2*/)
0029: 
0030: extern DWORD dwDecl[];
0031: 
0032: class CMyMesh{
0033: public:
0034:     CMyMesh(){
0035:         bActive = false;
0036:         pVB = NULL;
0037:         pIndex = NULL;
0038:         pSubsetTable = NULL;
0039:         pTextures = NULL;
0040:         pMaterials = NULL;
0041:         nFaces = nVertices = dwNumMaterials = 0;
0042:         rot.x = rot.y = rot.z = 0;
0043:     }
0044:     bool                    bActive;
0045:     float                   radius;     // 大きさ
0046:     D3DXVECTOR3             center;     // 中心位置
0047:     D3DXVECTOR3             rot;
0048: 
0049:     LPDIRECT3DVERTEXBUFFER8 pVB;
0050:     LPDIRECT3DINDEXBUFFER8  pIndex;
0051:     D3DXATTRIBUTERANGE      *pSubsetTable;
0052:     DWORD                   nFaces;
0053:     DWORD                   nVertices;
0054:     D3DMATERIAL8            *pMaterials;        // メッシュの質感
0055:     LPDIRECT3DTEXTURE8      *pTextures;     // メッシュのテクスチャー
0056:     DWORD                   dwNumMaterials; // マテリアルの数
0057: 
0058:     HRESULT Load(LPDIRECT3DDEVICE8 lpD3DDev, char *filename);
0059:     void Release();
0060: };
0061: // ----------------------------------------------------------------------------
0062: // テクスチャー
0063: // ----------------------------------------------------------------------------
0064: class CTextureMgr{
0065: public:
0066:     static HRESULT Load(LPDIRECT3DDEVICE8 lpD3DDev, const char *filename, LPDIRECT3DTEXTURE8 *ppTexture);
0067:     static void Release(LPDIRECT3DTEXTURE8 pTexture);
0068: };
0069: // ----------------------------------------------------------------------------
0070: // 頂点シェーダー
0071: // ----------------------------------------------------------------------------
0072: class CVertexShaderMgr{
0073: public:
0074:     static HRESULT Load(LPDIRECT3DDEVICE8 lpD3DDev, const char *filename, DWORD *phVertexShader, const DWORD dwDecl[]);
0075:     static void Release(LPDIRECT3DDEVICE8 lpD3DDev, DWORD *phVertexShader);
0076: };
0077: // ----------------------------------------------------------------------------
0078: // ピクセルシェーダー
0079: // ----------------------------------------------------------------------------
0080: class CPixelShaderMgr{
0081: public:
0082:     static HRESULT Load(LPDIRECT3DDEVICE8 lpD3DDev, const char *filename, DWORD *phPixelShader);
0083:     static void Release(LPDIRECT3DDEVICE8 lpD3DDev, DWORD *phPixelShader);
0084: };
0085: 
0086: 
0087: #endif /* !_LOAD_H */
0088: