[发明专利]一种基于DirectX平台的游戏引擎数据处理系统及方法有效
申请号: | 201911342435.3 | 申请日: | 2019-12-23 |
公开(公告)号: | CN111111197B | 公开(公告)日: | 2021-07-16 |
发明(设计)人: | 校景中;刘海波 | 申请(专利权)人: | 西南民族大学 |
主分类号: | A63F13/60 | 分类号: | A63F13/60 |
代理公司: | 北京众合诚成知识产权代理有限公司 11246 | 代理人: | 邹仕娟 |
地址: | 610041 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 directx 平台 游戏 引擎 数据处理系统 方法 | ||
1.一种基于DirectX平台的游戏引擎数据处理系统,其特征在于,所述基于DirectX平台的游戏引擎数据处理系统包括:
核心系统,用于对游戏的内存、容器、字符串、异常、日志进行管理与处理;
渲染系统,用于定义和处理渲染相关功能,所述功能包括纹理的加载和渲染、文本布局的创建和渲染、字体文件的加载、几何形状的处理;
事件系统,用于定义和管理游戏事件;
场景系统,用于对游戏场景与场景中的元素进行处理与管理;
动画系统,用于制作游戏动画,动画为补间动画或帧动画;
音频系统,用于进行音频文件加载、播放;
GUI系统,用于处理游戏界面中的按钮、菜单;
工具库,用于提供定时任务、资源管理、文件管理、异步任务相关处理工具;
第三方库,用于调用第三方库实现相应功能;
所述基于DirectX平台的游戏引擎数据处理系统的渲染系统对Direct2D、DXGI和Direct3D的驱动层接口进行封装,兼容Direct3D10和Direct3D11;
所述基于DirectX平台的游戏引擎数据处理系统使用插件形式构架,支持灵活的插件形式的组件增加方式;
所述基于DirectX平台的游戏引擎数据处理系统使用侵入式链表,并使用所述链表构建场景中的树形结构;
所述基于DirectX平台的游戏引擎数据处理系统使用侵入式智能指针进行内存管理,所述智能指针将引用计数的相关操作托管到其他类中;
所述基于DirectX平台的游戏引擎数据处理系统使用字符串容器,所述字符串容器针对常量字符串进行了优化;
所述基于DirectX平台的游戏引擎数据处理系统使用数组容器,所述数组容器针对非类类型的容器元素的内存操作进行优化;
核心系统中的函数库和类库在以下几个方面进行优化和改进:
A、设计和实现vector容器类;该类会对容器元素类型进行判断,若元素类型为内置类型,则使用内存操作函数直接对底层进行操作,这个功能通过模板类的偏特化实现,vector类本身不包含内存操作,而是通过vector_memory_manager实例操作内存,偏特化后的vector容器针对不同类型的容器元素采用不同类型的vector_memory_manager;
B、设计和实现basic_string字符串类;basic_string类中包含一个原始字节数组和常字符串指针的匿名union联合体,默认情况下只持有常量字符串指针,而不进行内容拷贝;当需要操作字符串实际内容时,basic_string自动完成字符串内容的懒拷贝,该过程对于用户是透明的;
C、设计和实现intrusive_ptr侵入式智能指针类;智能指针只需要保存引用计数对象的地址,根据RAII原理在析构函数中减少该对象的引用计数;
D、设计和实现intrusive_list侵入式链表类;侵入式链表中的元素本身就是迭代器,储存了节点的前驱后继,并通过继承intrusive_list_item的方式实现链表结构,不需要额外的储存空间;
E、设计和实现function伪函数类;function类将所有类型的functor抽象为callable类型,并保存callable基类指针;callable类通过虚函数invoke实现实际的函数调用过程,所有的callable对象都是引用计数对象;派生自callable的proxy_callable类、proxy_mem_callable类和proxy_const_mem_callable类分别完成对完成functor对象、类成员函数、类常函数的代理调用;
F、设计和实现Matrix3x2矩阵类;3x2大小的矩阵用于表示二维世界中的坐标变换关系,矩阵类在计算多个矩阵的乘法时,会创建一个开销小于预设值的对象来储存乘法的左右操作数,即通过该对象储存表达式本身,当获取表达式结果时,一次性将表达式展开,计算结果直接存入新的变量中;
所述事件系统为游戏开发者提供了事件处理机制,事件是指包含鼠标位移、鼠标点击、键盘按键按下、窗口大小变化、窗口标题变化在内的游戏应用程序所可能发生的情况,当一个事件发生时,事件系统将事件分发到各个事件支持组件,游戏开发者设置事件监听器以监听某一特定类型的事件的发生,并处理该事件;
所有组件注册在Application类上,并随着该类的启动进行初始化,Application类首先通过WindowsAPI判断是否有事件发生,当有事件发生时该类会调用事件支持组件的相应函数;然后进入更新流程,更新流程用于更新游戏数据和状态,更新流程分为更新前、更新时、更新后三个步骤,其中更新前和更新时以组件的注册顺序通知各组件,更新后以组件注册的逆序通知各组件;随后进入渲染流程,渲染流程分为渲染前、渲染时、渲染后三个步骤,其中渲染前和渲染时以组件的注册顺序通知各组件,渲染后以组件注册的逆序通知各组件;Application类不断循环整个过程,直到游戏退出时卸载所有组件;
事件系统在分发事件的过程中,首先在Windows消息循环中获取产生的消息,将消息分发给注册在Application上的所有事件支持组件,其中Director类是默认注册的事件支持组件之一,Director类用于管理场景的更新、渲染、过渡和事件分发,该类收到事件后会把事件转发给当前场景;场景是Stage类,Stage类会递归地把事件分发给它的子节点,每个节点都先调用相应的事件监听器,然后继续向节点树的下层分发。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西南民族大学,未经西南民族大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911342435.3/1.html,转载请声明来源钻瓜专利网。