工程结构优化
在MiniEngine项目中,核心文件都放在Core文件夹下,显得文件很多,阅读起来可能不是很方便。这里稍微做一下整理。根据功能分好文件夹,对应VS中已经分好的文件夹。
MiniEngine的纹理操作类
在MiniEngine中提供了非常方便的纹理类,TextureManager。简单阅读一下,使用起来也是非常的简单
// 指定纹理文件夹的相对路径
TextureManager::Initialize(L"Textures/");
// 定义一个MangedTexture的指针数组,这里里面存放读取到的纹理
const ManagedTexture* MatTextures[3] = {};
MatTextures[0] = TextureManager::LoadFromFile(L"bricks", true);
MatTextures[1] = TextureManager::LoadFromFile(L"stone", true);
MatTextures[2] = TextureManager::LoadFromFile(L"tile", true);
// 这里就取出来了对应纹理的SRV
MatTextures[0]->GetSRV();
可以简单的查看下纹理创建的部分,发现在FindOrLoadTexture中new了ManagedTexture对象,保存在s_TextureCache中。
而s_TextureCache的定义map< wstring, unique_ptr > s_TextureCache; 采用unique_ptr指针管理ManagedTexture。
调用TextureManager::Shutdown() 即可释放对象。
这里会管理所有载入的纹理。问题就是没有提供比较只能的释放系统,只能Shutdown整体释放,直接拿来制作游戏会不够方便。未来要优化一下这个释放的机制。
Shutdown按照原先工程就在Graphics::Shutdow写入就好了。
添加相关联的其余文件,文件列表
FileUtility.h
FileUtility.cpp
dds.h
DDSTextureLoader.h