3D游戏引擎入门课程3——资源管理

资源管理

资源管理概述

游戏资源的组织和管理。其目的是有效地组织和管理各类游戏资源，即在合适的时候快速准确地提供给游戏程序使用。其中，资源组织是指根据各类资源的特性和使用方式，设计资源数据的内存结构；资源管理是指抽象并定义统一的资源处理方式，如：资源加载和卸载、资源调度等。

资源管理过程图如下：

游戏资源管理：

文件管理：包括文件加载与卸载，文件解析，文件格式转换，文件资源打包，文件资源传输等过程。

内存管理：包括内存分配，访问保证，内存释放等功能：

状态管理：一般地，一个游戏资源不会再内存中重复存储，以节省内存，根据资源状态，决定加载和使用等操作；通过状态转换图，管理资源加载或卸载的操作。资源状态有：未定义、已定义、未加载、已加载、正使用等。资源状态转换图示例：

调度算法：原则是尽可能少地移动资源数据，当不得不移动时，根据一定的条件决定移动策略。常用的调度算法包括：对资源优先级排列、LRU 算法、根据当前操作决定最可能使用的资源等。

多线程处理

资源管理实例

OGRE 资源管理

其中主要类的类图如下：

上述三个核心类的关系图如下：

OGRE 资源生命周期的时序图如下：

Panda3D 资源管理

Panda3D 资源管理主要类模块：

Panda3D 异步资源加载器类图：

Panda3D 异步加载时序图：