计划自己的3D图象引擎(4):WuguiEngine之模子、特效、贴图[VC/C++编程]
本文“计划自己的3D图象引擎(4):WuguiEngine之模子、特效、贴图[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1. 前言
话说有一段时间没有更新了,这段时间好好玩了一下,也抽空写了一点程序,把八叉树场景管理写了,也优化了一点资源加载的一些内容.之前对DirectX的好些地方还是没有弄清楚,目前对这些地方至少有了更多的理解.发一下本日完成的八叉树场景管理,里面的模子用的是DirectX示例的老虎,这儿看不太清楚--;
本日主要说说我的引擎中的模子,特效,贴图的实现,至少把大约的意思说清楚.假如还有不懂的地方可以跟我接洽.
2. 模子、特效、贴图的资源复用
大家也可以看到了,上面那张图上的老虎不止一个,当同一个模子的数目多到一定程度(比方说10000个),就要考虑一定的优化了,假如每次都傻傻的从文件中把模子读取出来,保存为一个ID3DXMesh,那不但加载的时间慢的令人无法忍耐,并且耗费的内存一样宏大.在WuguiEngine中,我利用了一个对比简单的办法来办理这个问题.
计划情势的中央机惟就是对改正关闭,对扩大开放,中央机惟就是“改变”,但是很不好意思的说,我对D3D一知半解,在很多时刻乃至不清楚“改变”将呈目前什么地方,所以我利用的办法,很简单,目前用起来很清楚,但是假如对之后的扩大支持不好大概有更好的架构办法还望大家指导.本系列文章的目标就是举一反三.
我利用了一个简单的Map来完成这些内容下面给出资源管理器(ResourceManager)的定义
1: class GraphicsDevice;
2:
3: //资源的范例
4: enum ResourceType
5: {
6: RTTexture = 0,
7: RTMesh = 1,
8: RTEffect = 2,
9: };
10:
11: //一个资源的描写
12: //由ResourceType,Void*范例的指针pResource,引用次数useCount构成
13: typedef struct StructRes
14: {
15: public:
16: StructRes(void* pRes, ResourceType type)
17: {
18: pResource = pRes;
19: useCount = 1;
20: resourceType = type;
21: }
22: ResourceType resourceType;
23: void* pResource;
24: int useCount;
25: } StructRes;
26:
27: //资源管理器
28: class ResourceManager
29: {
30: public:
31: static ResourceManager* GetInstance();
32:
33: //按照文件名获得资源文件
34: void* GetD3DResource(string filename,
35: GraphicsDevice* pDevice,
36: ResourceType type);
37:
38: //按照文件名卸载资源文件
39: void DisposeD3DResource(string filename);
40: protected:
41: ResourceManager();
42:
43: map<string, StructRes*> resourceTable;
44: static ResourceManager* pInstance;
45: };
以上是“计划自己的3D图象引擎(4):WuguiEngine之模子、特效、贴图[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |