CN111111197A - 一种基于DirectX平台的游戏引擎数据处理系统及方法 - Google Patents
一种基于DirectX平台的游戏引擎数据处理系统及方法 Download PDFInfo
- Publication number
- CN111111197A CN111111197A CN201911342435.3A CN201911342435A CN111111197A CN 111111197 A CN111111197 A CN 111111197A CN 201911342435 A CN201911342435 A CN 201911342435A CN 111111197 A CN111111197 A CN 111111197A
- Authority
- CN
- China
- Prior art keywords
- game
- data processing
- rendering
- engine data
- animation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明属于计算;推算;计数技术领域,公开了一种基于DirectX平台的游戏引擎数据处理系统及方法,包括:核心系统:用于对游戏的内存、容器、字符串、异常、日志进行管理与处理;渲染系统用于渲染游戏画面;事件系统用于定义、管理游戏事件;场景系统用于对游戏场景与场景中的元素进行处理与管理;动画系统用于制作游戏动画,所述动画可为补间动画或帧动画;音频系统用于对游戏相关音频处理;GUI系统用于制作游戏界面,并对界面进行相应处理;工具库用于提供定时任务、资源管理、文件管理、异步任务相关处理工具;第三方库用于调用ImGUI、CURL、Box2D等第三方库实现相应功能。
Description
技术领域
本发明属于计算;推算;计数技术领域,尤其涉及一种基于DirectX平台的游戏引擎数据处理系统及方法。
背景技术
目前,最接近的现有技术:随着游戏行业的迅速发展,基于DirectX平台的游戏引擎数据处理技术也在各大厂商的推动下日趋完善。基于DirectX平台的游戏引擎数据处理控制着游戏应用程序的主流程,让游戏各个模块和组件有序地执行,该技术的目的是创造游戏开发中的可重用组件,降低游戏开发的难度,缩短游戏开发的周期。目前使用C++语言开发的基于DirectX平台的游戏引擎数据处理有Unreal、Cocos2dx等,现有技术中,引擎为了实现跨平台和跨编译器,限制了其无法充分发挥C++编程语言的优势,造成了基于DirectX平台的游戏引擎数据处理技术在性能上的瓶颈,而且目前商业引擎的代码结构过于复杂和庞大,定制性不灵活。
综上所述,现有技术存在的问题是:现有技术、引擎为了实现跨平台和跨编译器,限制了其无法充分发挥C++编程语言的优势,造成了游戏引擎数据处理技术在性能上的瓶颈,而且目前商业引擎的代码结构过于复杂和庞大,定制性不灵活。
发明内容
针对现有技术存在的问题,本发明提供了一种基于DirectX平台的游戏引擎数据处理系统及方法。
本发明是这样实现的,一种基于DirectX平台的游戏引擎数据处理系统,所述基于DirectX平台的游戏引擎数据处理系统包括:
核心系统,用于对游戏的内存、容器、字符串、异常、日志进行管理与处理;
渲染系统,用于定义和处理渲染相关功能,所述功能包括纹理的加载和渲染、文本布局的创建和渲染、字体文件的加载、几何形状的处理;
事件系统,用于定义和管理游戏事件;
场景系统,用于对游戏场景与场景中的元素进行处理与管理;
动画系统,用于制作游戏动画,动画可为补间动画或帧动画;
音频系统,用于进行音频文件加载、播放;
GUI系统,用于处理游戏界面中的按钮、菜单;
工具库,用于提供定时任务、资源管理、文件管理、异步任务相关处理工具;
第三方库,用于调用第三方库实现相应功能。
进一步,所述基于DirectX平台的游戏引擎数据处理系统的渲染系统对Direct2D、DXGI和Direct3D的驱动层接口进行封装,兼容Direct3D10和Direct3D11;
所述基于DirectX平台的游戏引擎数据处理系统使用插件形式构架,支持灵活的插件形式的组件增加方式;
所述基于DirectX平台的游戏引擎数据处理系统使用侵入式链表,并使用所述链表构建场景中的树形结构。
进一步,所述基于DirectX平台的游戏引擎数据处理系统使用侵入式智能指针进行内存管理,所述智能指针将引用计数的相关操作托管到其他类中;
所述基于DirectX平台的游戏引擎数据处理系统使用字符串容器,所述字符串容器针对常量字符串进行了优化;
所述基于DirectX平台的游戏引擎数据处理系统使用数组容器,所述数组容器针对非类类型的容器元素的内存操作进行优化。
进一步,所述场景系统、动画系统、GUI系统构建于渲染系统之上,提供更加符合游戏开发概念的函数库和类库;场景系统提供游戏场景的概念,将游戏画面中的所有元素抽象为Actor,Actor为游戏开发者提供移动、旋转、缩放游戏中元素的接口;动画系统提供常用的多种动画实现方式,动画系统与场景系统结合使用以实现游戏元素的平移、跳跃、透明度渐变、旋转等动画,以及游戏常用的帧动画,并支持复杂动画组合和非线性过渡动画;GUI系统为游戏开发者提供按钮、菜单常用的GUI组件,组件自动处理鼠标点击事件;
所述事件系统为游戏开发者提供了事件处理机制,事件是指包含鼠标位移、鼠标点击、键盘按键按下、窗口大小变化、窗口标题变化在内的游戏应用程序所可能发生的情况,当一个事件发生时,事件系统将事件分发到各个事件支持组件,游戏开发者可以设置事件监听器以监听某一特定类型的事件的发生,并处理该事件。
进一步,所述音频系统提供游戏的音频播放功能;音频系统从音频文件或可执行文件内嵌音频资源中读取音频数据,并使用MediaFoundation技术将数据解码为XAudio2所需的WAV格式流,支持音频播放、暂停、调整音量功能;同时音频系统提供SoundPlayer音频播放器,可同时缓存和管理多个音频;
所述工具库为游戏开发者提供定时任务工具每隔一段时间执行一次特定任务,异步任务工具在多线程下执行特定任务并在任务结束后以回调函数的方式通知开发者,资源缓存工具缓存图像资源、帧动画资源、字体资源;
所述第三方库提供第三方库的使用支持,拓展功能;对Box2D的支持使得游戏开发者使用物理引擎的相关功能,对CURL的支持使得游戏开发者使用HTTP网络通信功能。
本发明的另一目的在于提供一种运行所述基于DirectX平台的游戏引擎数据处理系统的基于DirectX平台的游戏引擎数据处理方法,所述基于DirectX平台的游戏引擎数据处理方法包括:以Application类作为组件管理器,将新增的功能组件以插件的形式来插入系统工作,组件管理器自动完成组件的初始化、状态更新、销毁;组件类型分为渲染支持组件、更新支持组件和事件支持组件,继承相应的组件可接入渲染、更新、事件分发的功能。
进一步,所述基于DirectX平台的游戏引擎数据处理方法的所有组件注册在Application类上,并随着该类的启动进行初始化,Application类首先通过WindowsAPI判断是否有事件发生,当有事件发生时该类会调用事件支持组件的相应函数;然后进入更新流程,更新流程用于更新游戏数据和状态,更新流程分为更新前、更新时、更新后三个步骤,其中更新前和更新时以组件的注册顺序通知各组件,更新后以组件注册的逆序通知各组件;随后进入渲染流程,渲染流程分为渲染前、渲染时、渲染后三个步骤,其中渲染前和渲染时以组件的注册顺序通知各组件,渲染后以组件注册的逆序通知各组件;Application类不断循环整个过程,直到游戏退出时卸载所有组件。
进一步,所述基于DirectX平台的游戏引擎数据处理方法事件系统在分发事件的过程中,首先在Windows消息循环中获取产生的消息,将消息分发给注册在Application上的所有事件支持组件,其中Director类是默认注册的事件支持组件之一,Director类用于管理场景的更新、渲染、过渡和事件分发,该类收到事件后会把事件转发给当前场景;场景是Stage类,Stage类会递归地把事件分发给它的子节点,每个节点都先调用相应的事件监听器,然后继续向节点树的下层分发。
本发明的另一目的在于提供一种实现所述基于DirectX平台的游戏引擎数据处理方法的信息数据处理终端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于DirectX平台的游戏引擎数据处理方法。
综上所述,本发明的优点及积极效果为:本发明让游戏开发人员能更轻松地开发运行于Windows平台上的游戏,本发明为开发过程提供了必要工具,使得游戏开发更快速、更简单,具有易维护性、易操作性、易扩展性,使游戏运行过程流畅、稳定,安全可靠。本发明能提升游戏画面渲染速度,提高游戏画面帧率,尤其在游戏场景较复杂情况下能较明显地提升帧率。
本发明还具备定时器功能、异步任务与多线程工作支持、数据持久化工具、资源缓存工具、多媒体音频组件、GUI组件、网络库组件等多种组件工具支持及多种功能。
附图说明
图1是本发明实施例提供的基于DirectX平台的游戏引擎数据处理系统的结构示意图;
图中:1、工具库;2、第三方库;3、动画系统;4、场景管理;5、GUI系统;6、渲染模块;7、事件系统;8、音频引擎;9、核心系统。
图2是本发明实施例提供的组件运行流程图。
图3是本发明实施例提供的事件分发流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种基于DirectX平台的游戏引擎数据处理系统及方法,下面结合附图对本发明作详细的描述。
如图1所示,本发明实施例提供的基于DirectX平台的游戏引擎数据处理系统包括:
核心系统1:定义和实现了游戏无关的函数库和类库,包括但不限于内存管理、数学库、容器、时钟、日志等。
渲染系统2:用于处理渲染相关功能,所属功能包括纹理的加载和渲染、文本布局的创建和渲染、字体文件的加载、几何形状的处理等。
事件系统3:用于定义、管理游戏事件。
场景系统4:用于对游戏相关场景进行处理与管理。
动画系统5:用于制作游戏动画,所述动画可为补间动画或帧动画。
GUI系统6:用于制作游戏界面,并对界面进行相应处理。
音频系统7:用于进行音频文件加载、播放等。
工具库8:用于提供定时任务、资源管理、文件管理、异步任务相关处理工具。
第三方库9:用于调用ImGUI、CURL、Box2D等第三方库实现相应功能。
在本发明的优选实施例中,核心系统1构建的内存管理、数学库等均与游戏开发无关,是一切上层系统的通用部分,服务于其他系统。
在本发明的优选实施例中渲染系统2用于处理和游戏画面渲染相关的功能,其直接调用DirectXAPI,并在此基础上进行了封装,使所述渲染系统2同时支持Direct3D10和Direct3D11,并通过DXGI技术使得Direct2D渲染的平面可以绘制到Direct3D的渲染目标上。渲染系统2为本发明提供了相比于原始DirectX API更具体、更实例化的渲染功能,例如文本布局、几何形状等的创建和处理,以及图像文件的自动解码等。
在本发明的优选实施例中场景系统4、动画系统5、GUI系统6均构建于所述渲染系统2之上,提供更加符合游戏开发概念的函数库和类库。例如场景系统4为本发明提供了游戏场景的概念,将游戏画面中的所有元素抽象为Actor,Actor为游戏开发者提供移动、旋转、缩放游戏中元素的接口;再如动画系统5为本发明提供常用的多种动画实现方式,动画系统5与场景系统4结合使用以实现游戏元素的平移、跳跃、透明度渐变、旋转等动画,以及游戏常用的帧动画等,并支持复杂动画组合和非线性过渡动画等;再如GUI系统6为游戏开发者提供按钮、菜单等常用的GUI组件,这些组件自动处理鼠标点击等事件。
在本发明的优选实施例中事件系统3为游戏开发者提供了事件处理机制,所谓事件是指包含鼠标位移、鼠标点击、键盘按键按下、窗口大小变化、窗口标题变化等在内的游戏应用程序所可能发生的情况,当一个事件发生时,事件系统3会将事件分发到各个事件支持组件,游戏开发者可以设置事件监听器以监听某一特定类型的事件的发生,并处理该事件。事件的分发流程如图3所示。
在本发明的优选实施例中音频系统7为本发明提供了游戏所需要的音频播放功能,该系统属于可选系统,以组件的形式提供给开发者。音频系统7可以从音频文件或可执行文件内嵌音频资源中读取音频数据,并使用Media Foundation技术将数据解码为XAudio2所需的WAV格式流,支持音频播放、暂停、调整音量等功能。同时音频系统提供了SoundPlayer音频播放器,可同时缓存和管理多个音频。
在本发明的优选实施例中工具库8为游戏开发者提供了更丰富的功能,例如定时任务工具可以每隔一段时间执行一次特定任务,异步任务工具可以在多线程下执行特定任务并在任务结束后以回调函数的方式通知开发者,资源缓存工具可以缓存图像资源、帧动画资源、字体资源等。
在本发明的优选实施例中第三方库9为本发明提供了Box2D、CURL等第三方库的使用支持,以拓展本发明的功能。本发明对Box2D的支持使得游戏开发者可以轻松地使用物理引擎的相关功能,对CURL的支持使得游戏开发者可以使用HTTP网络通信功能。
在本发明的优选实施例中核心系统1中的函数库和类库在以下几个方面进行优化和改进:
A、设计和实现vector容器类,该类会对容器元素类型进行判断,若元素类型为内置类型,则使用内存操作函数直接对底层进行操作,避免过度调用构造和析构。这个功能通过模板类的偏特化实现,vector类本身不包含内存操作,而是通过vector_memory_manager实例操作内存,偏特化后的vector容器针对不同类型的容器元素采用不同类型的vector_memory_manager,以提升性能;
B、设计和实现basic_string字符串类,该类为了解决游戏中使用的大量常量字符串赋值时产生内存拷贝的问题。basic_string类中包含一个原始字节数组和常字符串指针的匿名union联合体,默认情况下只持有常量字符串指针,而不进行内容拷贝。当需要操作字符串实际内容时,basic_string自动完成字符串内容的懒拷贝,该过程对于用户是透明的;
C、设计和实现intrusive_ptr侵入式智能指针类,该类为了优化C++标准库提供的std::shared_ptr的性能而设计,std::shared_ptr为了实现堆内存的管理,需要先在堆上创建一个引用计数对象,该对象再去管理实际分配的内存,而智能指针只需要保存该引用计数对象的地址,根据RAII原理在析构函数中减少该对象的引用计数。侵入式智能指针由于不需要这个额外的引用计数对象,而是将引用计数保存到实际对象中,牺牲结构设计的自由而获取更好的性能,但不会降低其稳定性,因为侵入式智能指针实质上也是基于引用计数设计的;
D、设计和实现intrusive_list侵入式链表类,该类为了优化节点树的储存结构而设计。一般游戏中的节点树结构通过容器储存结点指针实现,在遍历所有节点的过程中,如果树结构发生了变化,例如添加新节点或移除节点,会造成迭代器的失效。引擎中设计的侵入式链表中的元素本身就是迭代器,储存了节点的前驱后继,并通过继承intrusive_list_item的方式实现链表结构,不需要额外的储存空间,在解决迭代器失效问题的基础上减少了空间占用;
E、设计和实现function伪函数类,该类在实现标准库中的std::function类的功能的同时,减少了内存空间占用。function类将所有类型的functor抽象为callable类型,并保存callable基类指针。callable类通过虚函数invoke实现实际的函数调用过程,为了优化堆内存的管理,所有的callable对象都是引用计数对象。派生自callable的proxy_callable类、proxy_mem_callable类和proxy_const_mem_callable类分别完成对完成functor对象、类成员函数、类常函数的代理调用;
F、设计和实现Matrix3x2矩阵类,该类优化了2D游戏中需要的大量矩阵运算速度。3x2大小的矩阵可以用于表示二维世界中的坐标变换关系,一般引擎中设计的矩阵类通过重载乘号运算符实现,当多个矩阵连续相乘时,每次乘法运算都会产生临时对象来储存计算过程的中间结果。本发明中的矩阵类在计算多个矩阵的乘法时,会创建一个开销极小的对象来储存乘法的左右操作数,即通过该对象储存表达式本身,当获取表达式结果时,一次性将表达式展开,计算结果直接存入新的变量中,这个过程没有额外的矩阵对象产生,以提升矩阵乘法运算速度;
本发明的特点之一在于设计和实现了组件形式构架,以Application类作为组件管理器,可以将新增的功能组件以插件的形式来插入系统工作,组件管理器自动完成组件的初始化、状态更新、销毁等工作。组件类型分为渲染支持组件、更新支持组件和事件支持组件,继承相应的组件可接入渲染、更新、事件分发的功能,这种构架方式降低了各组件间的代码耦合度,组件内效率较高。例如,渲染系统2继承了渲染支持组件和事件支持组件,使得渲染系统2可以接入到引擎的渲染流程中,并能获取到窗口大小变化等事件。
如图2所示,所有组件注册在Application类上,并随着该类的启动进行初始化,Application类首先通过WindowsAPI判断是否有事件发生,当有事件发生时该类会调用事件支持组件的相应函数。然后进入更新流程,更新流程用于更新游戏数据和状态,更新流程分为更新前、更新时、更新后三个步骤,其中更新前和更新时以组件的注册顺序通知各组件,更新后以组件注册的逆序通知各组件。随后进入渲染流程,渲染流程分为渲染前、渲染时、渲染后三个步骤,其中渲染前和渲染时以组件的注册顺序通知各组件,渲染后以组件注册的逆序通知各组件。Application类不断循环整个过程,直到游戏退出时卸载所有组件。
如图3所示,所述事件系统3在分发事件的过程中,首先在Windows消息循环中获取产生的消息,将消息分发给注册在Application上的所有事件支持组件,其中Director类是默认注册的事件支持组件之一,Director类是所述场景系统4的核心,用于管理场景的更新、渲染、过渡和事件分发,该类收到事件后会把事件转发给当前场景,所述场景即是Stage类,Stage类会递归地把事件分发给它的子节点,每个节点都先调用相应的事件监听器,然后继续向节点树的下层分发。
综上所述,本发明不仅仅是一个渲染引擎,而是一个完整的支持游戏开发流程的基于DirectX平台的游戏引擎数据处理,采用易于拓展的组件支持方式,完全面向对象的设计理念,为游戏开发者提供丰富的函数库和类库。
表1是本发明实施例提供的Alpha混合的精灵群渲染测试结果对比
精灵群数量(个) | 平均帧率 | CPU单位总计 | 矩阵变换占用CPU时间单位 | |
Kiwano | 4^7 | 25.8 | 11151 | 1231 |
Cocos2dx | 4^7 | 17.2 | 11147 | 1373 |
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于DirectX平台的游戏引擎数据处理系统,其特征在于,所述基于DirectX平台的游戏引擎数据处理系统包括:
核心系统,用于对游戏的内存、容器、字符串、异常、日志进行管理与处理;
渲染系统,用于定义和处理渲染相关功能,所述功能包括纹理的加载和渲染、文本布局的创建和渲染、字体文件的加载、几何形状的处理;
事件系统,用于定义和管理游戏事件;
场景系统,用于对游戏场景与场景中的元素进行处理与管理;
动画系统,用于制作游戏动画,动画可为补间动画或帧动画;
音频系统,用于进行音频文件加载、播放;
GUI系统,用于处理游戏界面中的按钮、菜单;
工具库,用于提供定时任务、资源管理、文件管理、异步任务相关处理工具;
第三方库,用于调用第三方库实现相应功能。
2.如权利要求1所述的基于DirectX平台的游戏引擎数据处理系统,其特征在于,所述基于DirectX平台的游戏引擎数据处理系统的渲染系统对Direct2D、DXGI和Direct3D的驱动层接口进行封装,兼容Direct3D10和Direct3D11;
所述基于DirectX平台的游戏引擎数据处理系统使用插件形式构架,支持灵活的插件形式的组件增加方式;
所述基于DirectX平台的游戏引擎数据处理系统使用侵入式链表,并使用所述链表构建场景中的树形结构。
3.如权利要求1所述的基于DirectX平台的游戏引擎数据处理系统,其特征在于,所述基于DirectX平台的游戏引擎数据处理系统使用侵入式智能指针进行内存管理,所述智能指针将引用计数的相关操作托管到其他类中;
所述基于DirectX平台的游戏引擎数据处理系统使用字符串容器,所述字符串容器针对常量字符串进行了优化;
所述基于DirectX平台的游戏引擎数据处理系统使用数组容器,所述数组容器针对非类类型的容器元素的内存操作进行优化。
4.如权利要求1所述的基于DirectX平台的游戏引擎数据处理系统,其特征在于,所述场景系统、动画系统、GUI系统构建于渲染系统之上,提供更加符合游戏开发概念的函数库和类库;场景系统提供游戏场景的概念,将游戏画面中的所有元素抽象为Actor,Actor为游戏开发者提供移动、旋转、缩放游戏中元素的接口;动画系统提供常用的多种动画实现方式,动画系统与场景系统结合使用以实现游戏元素的平移、跳跃、透明度渐变、旋转等动画,以及游戏常用的帧动画,并支持复杂动画组合和非线性过渡动画;GUI系统为游戏开发者提供按钮、菜单常用的GUI组件,组件自动处理鼠标点击事件;
所述事件系统为游戏开发者提供了事件处理机制,事件是指包含鼠标位移、鼠标点击、键盘按键按下、窗口大小变化、窗口标题变化在内的游戏应用程序所可能发生的情况,当一个事件发生时,事件系统将事件分发到各个事件支持组件,游戏开发者可以设置事件监听器以监听某一特定类型的事件的发生,并处理该事件。
5.如权利要求1所述的基于DirectX平台的游戏引擎数据处理系统,其特征在于,所述音频系统提供游戏的音频播放功能;音频系统从音频文件或可执行文件内嵌音频资源中读取音频数据,并使用MediaFoundation技术将数据解码为XAudio2所需的WAV格式流,支持音频播放、暂停、调整音量功能;同时音频系统提供SoundPlayer音频播放器,可同时缓存和管理多个音频;
所述工具库为游戏开发者提供定时任务工具每隔一段时间执行一次特定任务,异步任务工具在多线程下执行特定任务并在任务结束后以回调函数的方式通知开发者,资源缓存工具缓存图像资源、帧动画资源、字体资源;
所述第三方库提供第三方库的使用支持,拓展功能;对Box2D的支持使得游戏开发者使用物理引擎的相关功能,对CURL的支持使得游戏开发者使用HTTP网络通信功能。
6.一种运行权利要求1所述基于DirectX平台的游戏引擎数据处理系统的基于DirectX平台的游戏引擎数据处理方法,其特征在于,所述基于DirectX平台的游戏引擎数据处理方法包括:以Application类作为组件管理器,将新增的功能组件以插件的形式来插入系统工作,组件管理器自动完成组件的初始化、状态更新、销毁;组件类型分为渲染支持组件、更新支持组件和事件支持组件,继承相应的组件可接入渲染、更新、事件分发的功能。
7.如权利要求6所述的基于DirectX平台的游戏引擎数据处理方法,其特征在于,所述基于DirectX平台的游戏引擎数据处理方法的所有组件注册在Application类上,并随着该类的启动进行初始化,Application类首先通过Windows API判断是否有事件发生,当有事件发生时该类会调用事件支持组件的相应函数;然后进入更新流程,更新流程用于更新游戏数据和状态,更新流程分为更新前、更新时、更新后三个步骤,其中更新前和更新时以组件的注册顺序通知各组件,更新后以组件注册的逆序通知各组件;随后进入渲染流程,渲染流程分为渲染前、渲染时、渲染后三个步骤,其中渲染前和渲染时以组件的注册顺序通知各组件,渲染后以组件注册的逆序通知各组件;Application类不断循环整个过程,直到游戏退出时卸载所有组件。
8.如权利要求6所述的基于DirectX平台的游戏引擎数据处理方法,其特征在于,所述基于DirectX平台的游戏引擎数据处理方法事件系统在分发事件的过程中,首先在Windows消息循环中获取产生的消息,将消息分发给注册在Application上的所有事件支持组件,其中Director类是默认注册的事件支持组件之一,Director类用于管理场景的更新、渲染、过渡和事件分发,该类收到事件后会把事件转发给当前场景;场景是Stage类,Stage类会递归地把事件分发给它的子节点,每个节点都先调用相应的事件监听器,然后继续向节点树的下层分发。
9.一种实现权利要求6~8任意一项所述基于DirectX平台的游戏引擎数据处理方法的信息数据处理终端。
10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求6-8任意一项所述的基于DirectX平台的游戏引擎数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911342435.3A CN111111197B (zh) | 2019-12-23 | 2019-12-23 | 一种基于DirectX平台的游戏引擎数据处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911342435.3A CN111111197B (zh) | 2019-12-23 | 2019-12-23 | 一种基于DirectX平台的游戏引擎数据处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111111197A true CN111111197A (zh) | 2020-05-08 |
CN111111197B CN111111197B (zh) | 2021-07-16 |
Family
ID=70501507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911342435.3A Expired - Fee Related CN111111197B (zh) | 2019-12-23 | 2019-12-23 | 一种基于DirectX平台的游戏引擎数据处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111111197B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118193330A (zh) * | 2024-05-15 | 2024-06-14 | 中建电子信息技术有限公司 | 一种应用于bim三维可视化的模型运行监测方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1749957A (zh) * | 2005-10-20 | 2006-03-22 | 北京航空航天大学 | 一种面向图形绘制引擎的io中间件装置 |
CN101034995A (zh) * | 2006-03-08 | 2007-09-12 | 北京汉辰科技有限公司 | 互联网个人视频录制系统及其终端 |
CN103345395A (zh) * | 2013-07-01 | 2013-10-09 | 绵阳市武道数码科技有限公司 | 一种用于大型多人在线角色扮演的3d游戏引擎 |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
US9607426B1 (en) * | 2013-12-20 | 2017-03-28 | Imagination Technologies Limited | Asynchronous and concurrent ray tracing and rasterization rendering processes |
KR20170050938A (ko) * | 2015-11-02 | 2017-05-11 | 동서대학교산학협력단 | 3d 그래픽 툴과 게임엔진 간 실시간 데이터 연동방법 |
CN106970875A (zh) * | 2017-03-01 | 2017-07-21 | 福建天晴数码有限公司 | 虚拟现实软件的帧率测试方法及其系统 |
CN110471701A (zh) * | 2019-08-12 | 2019-11-19 | Oppo广东移动通信有限公司 | 图像渲染的方法、装置、存储介质及电子设备 |
-
2019
- 2019-12-23 CN CN201911342435.3A patent/CN111111197B/zh not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1749957A (zh) * | 2005-10-20 | 2006-03-22 | 北京航空航天大学 | 一种面向图形绘制引擎的io中间件装置 |
CN101034995A (zh) * | 2006-03-08 | 2007-09-12 | 北京汉辰科技有限公司 | 互联网个人视频录制系统及其终端 |
CN103345395A (zh) * | 2013-07-01 | 2013-10-09 | 绵阳市武道数码科技有限公司 | 一种用于大型多人在线角色扮演的3d游戏引擎 |
US9607426B1 (en) * | 2013-12-20 | 2017-03-28 | Imagination Technologies Limited | Asynchronous and concurrent ray tracing and rasterization rendering processes |
KR20170050938A (ko) * | 2015-11-02 | 2017-05-11 | 동서대학교산학협력단 | 3d 그래픽 툴과 게임엔진 간 실시간 데이터 연동방법 |
CN105413176A (zh) * | 2015-11-10 | 2016-03-23 | 内蒙古工业大学 | 一种应用于游戏的3d引擎系统 |
CN106970875A (zh) * | 2017-03-01 | 2017-07-21 | 福建天晴数码有限公司 | 虚拟现实软件的帧率测试方法及其系统 |
CN110471701A (zh) * | 2019-08-12 | 2019-11-19 | Oppo广东移动通信有限公司 | 图像渲染的方法、装置、存储介质及电子设备 |
Non-Patent Citations (5)
Title |
---|
ANDREI ALEXANDRESCU著,侯捷,于春景译: "《C++设计新思维 泛型编程与设计模式之应用》", 31 March 2003, 华中科技大学出版社 * |
丁刚毅编著: "《数字媒体技术》", 31 August 2015, 北京理工大学出版社 * |
彭鹏菲,任雄伟,龚立编著: "《军队"2110工程"三期建设教材 军事系统建模与仿真》", 31 December 2016 * |
曾旭,晟倪胜,巧彭舰: "一种2D游戏引擎的设计与实现", 《计算机与信息技术》 * |
陈凯: "三维游戏引擎的设计与实现", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118193330A (zh) * | 2024-05-15 | 2024-06-14 | 中建电子信息技术有限公司 | 一种应用于bim三维可视化的模型运行监测方法和系统 |
CN118193330B (zh) * | 2024-05-15 | 2024-07-16 | 中建电子信息技术有限公司 | 一种应用于bim三维可视化的模型运行监测方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111111197B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200218519A1 (en) | Methods and systems for creating applications using scene trees | |
US9665841B2 (en) | Cross-platform application framework | |
US9658890B2 (en) | Runtime agnostic representation of user code for execution with selected execution runtime | |
US20040095387A1 (en) | Virtualized and realized user interface controls | |
US10592218B2 (en) | Dynamic data and compute resource elasticity | |
US10585653B2 (en) | Declarative programming model with a native programming language | |
CN107251004A (zh) | 通过使用欺骗时钟及细粒度频率控制实现的向后兼容性 | |
US20160077850A1 (en) | Methods, systems, and media for binary compatibility | |
CN110888628B (zh) | 生成控制工具的方法、装置、设备和存储介质 | |
Buttfield-Addison et al. | Unity game development cookbook: essentials for every game | |
WO2022095526A1 (zh) | 图形引擎和适用于播放器的图形处理方法 | |
Lewis et al. | Native mobile development: a cross-reference for iOS and Android | |
CN111111197B (zh) | 一种基于DirectX平台的游戏引擎数据处理系统及方法 | |
CN110955415B (zh) | 一种投影多平台服务适配的方法 | |
EP3752914B1 (en) | Techniques for native runtime of hypertext markup language graphics content | |
CN113485686B (zh) | 信息系统程序的生成方法、装置、电子设备及存储介质 | |
CN111443913B (zh) | 交互动画配置方法及装置、存储介质及电子设备 | |
CN111949265A (zh) | 一种数据处理方法、装置和电子设备 | |
KR100692210B1 (ko) | 게임 엔진에서 소정의 오브젝트를 렌더링하는 방법 및 상기랜더링 방법을 수행하는 프로그램이 기록된 기록 매체 | |
KR101586655B1 (ko) | 반복순환 구조의 게임 장면 구현 및 동작 방법 | |
CN112799954B (zh) | 快速构建测试环境的方法、设备及计算机可读介质 | |
Rosca | Master thesis: Integrating Wayland with Flutter | |
CN117406992A (zh) | 特效显示方法、装置、电子设备及可读存储介质 | |
CN116521510A (zh) | 测试方法、装置、设备、存储介质及产品 | |
CN118193152A (zh) | 处理启动任务的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210716 Termination date: 20211223 |