如何解决游戏数据、资源重复的问题?
现在我需要向游戏加入模型,模型有很多个,但是模型所用的贴图都是一样的。
问题表现为:程序加载一个模型时,会将模型的贴图资源也加载到内存当中。这样,虽然加载的是不同形状的模型,但贴图资源却重复加载,以至于消耗了几百兆的内存。
请教,如何解决这类问题?小生纯纯的新手,还望解答~。万分感谢!
[解决办法]
贴图肯定得用单独的加载器去加载,即,把纹理加载独立出来,
假如有个叫做CTextureManager的管理器,他只提供两个接口,一个是Load,一个是Unload
那10个模型用一个纹理,也是调用10次Load
但是Load内部完全可以返回同一个指针,
另外,Unload也不一定立即卸载,可能只是放入缓存,或放入池中,以重复利用.
总之接口要独立出来,纹理有纹理的加载器,模型有模型的加载器,声音有声音的加载器,他的实现完全隐藏来.
具体内部是怎么个存储,就看各自实现了。
[解决办法]
要让纹理加载器支持重复Load和重复Unload同一个纹理.这样使用起来才方便.
那么这样的话,就需要对纹理做资源做标记,使其全局唯一.