3D游戏引擎入门课程——内存管理与插件机制

写在前面

本专栏内容均为学堂在线慕课《3D游戏引擎架构设计基础》中的内容。个人将其转化成文字和图片的版本(个人更加喜欢文字版本的教程,阅读速度更快很多),方便查阅。
原课程链接:3D游戏引擎架构设计基础

内存管理与插件机制

内存管理和扩展插件概述

内存管理

内存管理是引擎底层和核心内容之一,引擎中几乎所有顶层基类都是内存分配的类,所以内存管理决定了系统的运行效率。

引擎的内存管理从对象可分为CPU主内存和GPU的显卡内存;从操作类型可分为数据结构的分配和释放,以及数据访问。

第三方标准库,如STL、BOOST等,已经提供了各种数据结构的内存分配和管理,使用这些标准库可以简化游戏引擎的底层设计。如STL,将数据类型抽象为容器,将数据组织和算法分离,其中容器主要包括三种:序列容器(vector, deque, list等)、关联容器(map, multimap, set, multiset等)、容器适配器(stack, queue, priority_queue等)。

第三方库还提供了内存分配的保护机制,避免内存指针的使用错误,防止内存泄漏,如shared_ptr,weak_ptr,scoped_ptr等。

动态内存分配是指使用的时候分配内存,不用的时候释放内存,但其开销很大,游戏引擎经常使用定制分配器做动态内存分配,包括:
在这里插入图片描述

扩展性

引擎的可扩展性要求:
在这里插入图片描述
在这里插入图片描述
插件技术:

  • 插件是可独立开发的程序块,由系统的插件接口管理。

  • 基于插件的体系架构是一种灵活的组件式结构。

  • 插件接口股安咯程序可以动态地调用多个插件,而不必或很少修改程序。

  • 优点在于:引擎核心功能简洁清晰;插件之间耦合度低,便于维护和修改;引擎根据需要选择插件,提高运行效率。

  • 插件接口的设计原则包括:通用性、兼容性、稳定性、可测试性、可维护性。

  • 插件管理机制:智能化识别插件,动态判断插件进行安装或卸载;自动化调用;管理插件间的通信;对插件进行初始化和配置管理。

内存管理和扩展插件实现实例

OGRE内存管理和扩展插件

OGRE中内存管理的分类:
在这里插入图片描述
OGRE中的智能指针SharedPtr:
在这里插入图片描述
OGRE中的GPU Buffer管理:
在这里插入图片描述
OGRE中插件的实现机制:
在这里插入图片描述
OGRE的插件类Plugin:
在这里插入图片描述
OGRE中的plugin.cfg
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值