3D引擎多线程:资源异步加载
来源:互联网 发布:ff14龙族女捏脸数据 编辑:程序博客网 时间:2024/04/29 23:00
本文原创版权归 博客园 flagship 所有,如有转载,请详细标明作者及原文出处,以示尊重!
作者:flagship
原文:3D引擎多线程:资源异步加载
首先我们需要定义一个Resource基类,它大致上是这样的:
class _DLL_Export Resource : public Base
{
public:
Resource();
virtual ~Resource();
// 是否过期
bool IsOutOfDate();
public:
// 是否就绪
virtual bool IsReady();
// 读取资源
virtual bool Load();
// 释放资源
virtual bool Release();
// 缓存资源
virtual bool Cache();
// 释放缓存
virtual void UnCache();
protected:
// 加载标记
bool m_bLoad;
// 完成标记
bool m_bReady;
private:
};
卸载方面,在加载新的单元同时,卸载身后旧的单元,对单元内所有资源调用Release,Load/Release带有引用计数,仍被引用的资源不会被卸载。当某一资源长时间没有被看见,则超时,调用UnCache释放VertexBuffer等资源。
为了实现超时卸载功能,我们需要一个ResourceManager类,每帧检查几个已Cache的资源,看起是否超时,另外也需对已加载的资源进行分类管理,注册其资源别名(可以为其文件名),提供查找资源的接口。
另外为了方便使用,我们需要一个模板句柄类ResHandle<T>,设置该资源的别名,其内部调用ResourceManange的查找方法,看此资源是否已存在,如不存在则new一个新的,GetImpliment则返回该资源对象,之后可以将该资源添加到实体中,而无需关心其是否已被加载,代码如下:
template <class T>
class _DLL_Export ResHandle
{
public:
ResHandle() { m_pResource = NULL; }
virtual ~ResHandle() {}
// 设置资源路径
void SetPath( wstring szPath )
{
Resource * pResource = ResourceManager::GetSingleton()->GetResource( Key( szPath ) );
if ( pResource != NULL )
{
m_pResource = (T *) pResource;
}
else
{
m_pResource = new T;
m_pResource->SetPath( szPath );
ResourceManager::GetSingleton()->AddResource( m_pResource );
}
}
// 模板实体类指针
T * GetImpliment() { return (T *) m_pResource; }
T * operator-> () { return (T *) m_pResource; }
protected:
// 模板实体类指针
Resource * m_pResource;
private:
};
- 3D引擎多线程:资源异步加载
- 3D引擎多线程:资源异步加载
- 多线程第一步:资源异步加载
- 3D引擎多线程
- 3D引擎多线程
- 3D引擎多线程
- Cocos2d-x 3.0多线程异步资源加载
- Cocos2d-x 3.0多线程异步资源加载
- Cocos2d-x 3.0多线程异步资源加载
- Cocos2d-x 3.0多线程异步资源加载
- libgdx游戏引擎(六)之资源异步加载
- Cocos2d-x 3.0多线程异步资源加载代码
- 一种3D引擎的多线程设计方案
- 一种3D引擎的多线程设计方案
- 一种3D引擎的多线程设计方案
- cocos2dx 资源 异步加载
- UE4 异步资源加载
- UE4 异步资源加载
- jiffies溢出与时间先后比较 + linux的HZ, Tick, Jiffies
- 各种数学符号
- Java的反射的动态生成
- PHP调试工具Xdebug安装配置教程
- C# 系统托盘 控件NotifyIcon
- 3D引擎多线程:资源异步加载
- jboss 提供的服务只能本机访问外部访问出错
- 详谈内核三步走Inline Hook实现
- UML面向对象建模与设计(第2版)
- Java开源建站工具
- C++ 返回 一个字符串在另外一个字符串中的位置,不存在时返回-1
- 关于TF,SD,SDHC的常识
- performance bug
- shutdown 用法