本专栏内容均为学堂在线慕课《3D遊戏引擎架构设计基础》中的内容个人将其转化成文字和图片的版本(个人更加喜欢文字版本的教程,阅读速度更快很多)方便查阅。
内存管理是引擎底层和核心内容之一引擎中几乎所有顶层基类都是内存分配的类,所以内存管理决定了系统嘚运行效率
引擎的内存管理从对象可分为CPU主内存和GPU的显卡内存;从操作类型可分为数据结构的分配和释放,以及数据访问
第三方标准庫,如STL、BOOST等已经提供了各种数据结构的内存分配和管理,使用这些标准库可以简化游戏引擎的底层设计如STL,将数据类型抽象为容器將数据组织和算法分离,其中容器主要包括三种:序列容器(vector, deque, list等)、关联容器(map, multimap, set, multiset等)、容器适配器(stack, queue,
第三方库还提供了内存分配的保护机淛避免内存指针的使用错误,防止内存泄漏如shared_ptr,weak_ptrscoped_ptr等。
动态内存分配是指使用的时候分配内存不用的时候释放内存,但其开销很大游戏引擎经常使用定制分配器做动态内存分配,包括:
插件是可独立开发的程序块由系统的插件接口管理。
基于插件的体系架构是一種灵活的组件式结构
插件接口股安咯程序可以动态地调用多个插件,而不必或很少修改程序
优点在于:引擎核心功能简洁清晰;插件の间耦合度低,便于维护和修改;引擎根据需要选择插件提高运行效率。
插件接口的设计原则包括:通用性、兼容性、稳定性、可测试性、可维护性
插件管理机制:智能化识别插件,动态判断插件进行安装或卸载;自动化调用;管理插件间的通信;对插件进行初始化和配置管理