d3d12龙书学习之MiniEngine的最小化实现(五) 龙书第9章 纹理贴图

工程结构优化

在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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值