151 //转换
152 CDx9App::GetDx9App().GetD3dSprite()->SetTransform(&matResult);
153
154 if(CDx9App::GetDx9App().GetD3dSprite())
155 {
156 CDx9App::GetDx9App().GetD3dSprite()->Draw(m_tex->GetTex(),&m_rect,&m_vcenter,&D3DXVECTOR3(0.0,0,0),-1);
157 }
158
159
160 }
文件名:DxTexture.h
1 //纹理类
2 #ifndef DXTEXTURE_H
3 #define DXTEXTURE_H
4
5 #include "ResObject.h"
6
7 class CDxTexture: public CResObject
8 {
9 public:
10 //1 id 2 设备指针 3 文件路径 4 图片宽 5 图片高
11 CDxTexture(SHORT _id, UINT _type, LPDIRECT3DDEVICE9 _pDevice, LPCTSTR _pSrcFile, UINT _w, UINT _h);
12
13 //返回指向纹理的指针
14 LPDIRECT3DTEXTURE9 GetTex()
15 {
16 return m_ptexture;
17 }
18
19 //返回图片宽
20 UINT GetWidth()
21 {
22 return m_info.Width;
23 }
24
25 //返回图片高
26 UINT GetHight()
27 {
28 return m_info.Height;
29 }
30
31 ~CDxTexture(void);
32 protected:
33
34 private:
35 CDxTexture(void);
36
37 //路径
38 LPCTSTR m_path;
39
40 //纹理指针
41 LPDIRECT3DTEXTURE9 m_ptexture;
42
43 //纹理信息
44 D3DXIMAGE_INFO m_info;
45 };
46
47 #endif
48
49
文件名:DxTexture.cpp
1 #include "DxTexture.h"
2
3
4 CDxTexture::CDxTexture(void)
5 {
6 }
7
8 CDxTexture::CDxTexture(SHORT _id, UINT _type, LPDIRECT3DDEVICE9 _pDevice,
9 LPCTSTR _pSrcFile, UINT _w, UINT _h )
10 {
11 m_path = _pSrcFile;
12
13 m_id = _id;
14
15 m_type = _type;
17 //从文件中载入纹理
18 D3DXCreateTextureFromFileExA(_pDevice, m_path, _w, _h,1,
19 D3DPOOL_DEFAULT, D3DFMT_UNKNOWN,
20 D3DPOOL_DEFAULT, D3DX_DEFAULT,
21 D3DX_DEFAULT, 0xffff00ff,
22 &m_info,NULL,&m_ptexture);
23
24 if(!m_ptexture)
25 {
26 MessageBox( NULL, " LPDIRECT3DTEXTURE is NULL,please check this funtion! ", "Error!", MB_OK );
27
28 }
29
30
31 }
32
33 CDxTexture::~CDxTexture(void)
34 {
35 //释放指针
36 if(m_ptexture)
37 {
38 m_ptexture->Release();
39 }
40
41 if(m_path)
42 {
43
44 m_path = NULL;
45 }
46 }
47
以上的3种资源类的写法,由于游戏项目还未完成声音部分资源来没写.目前只能提供纹理,精灵,动画,资源基类 的类的写法.
在写这些资源类的时候,我曾经想了一些很纠结的问题,比如DXsprite和Animation类为什么没有合并成一个类来写,合并在一起形成的类就会有动态的效果和静态的效果这样一来 不是也很方便吗 经过了一些思考后我个人觉得还是分开写出来比较好.因为,如果在游戏中所有的元素都没有动态的图片效果或者很少有效果,那么我们在创建精灵对象的时候不就无形的浪费了一些内存吗 一些和动画播放的变量完全不会用到.所以分开还是比较好.
下面我将给出管理这些资源的类;
文件名:ResManager.h
1 #ifndef RESMANAGER_H
2 #define RESMANAGER_H
3 #include "GlobalData.h"
4 #include "DxTexture.h"
5 #include "DxSprite.h"
6 #include "Animation.h"
7 #include "ResObject.h"
8 #include "Dx9App.h"
9 //XML
10 #include "tinyxml.h"
11 #include "tinystr.h"
12 #pragma comment(lib, "XMLLIB.lib")
13
14 class CResManager
15 {
16 public:
17 ~CResManager(void);
18
19 //获取资源管理对象指针
20 static CResManager* GetResManager();
21
22 //添加资源 参数1 资源的类 参数2 项目了文件路径
23 void AddResource(TYPE_RES _type,LPCTSTR _pSrcFile);
24
25 //删除所有资源
26 void ReMoveAll();
27
28 //获取纹理对象
29 CDxTexture& GetTex(UINT _id);
30
31 //获取动画对象
32 CAnimation& GetAnimation(UINT _id);
33 protected:
34
35 private:
36 CResManager(void);
37
38 //存放资源
39 vector
40
41 //管理类对象
42 static CResMana