CN102508648A - 一种图形引擎实现方法 - Google Patents
一种图形引擎实现方法 Download PDFInfo
- Publication number
- CN102508648A CN102508648A CN2011102864739A CN201110286473A CN102508648A CN 102508648 A CN102508648 A CN 102508648A CN 2011102864739 A CN2011102864739 A CN 2011102864739A CN 201110286473 A CN201110286473 A CN 201110286473A CN 102508648 A CN102508648 A CN 102508648A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- graphics engine
- implementation method
- engine implementation
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种图形引擎实现方法,该方法包括:预先将所需的数据分类抽象为多个数据模块;从所述数据模块中获取抽象数据;根据所述抽象数据创建对象,并生成包含所有对象的指针的结构列表;通过所述结构列表对所述对象进行创建、管理、分配资源和释放资源的操作。以该图形引擎实现方法构建的图形引擎既具有基类根形式构架的灵活性,达到可跨平台的应用,又具有组件形式构架较高的整体效率,同时实现简单,修改容易。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种图形引擎实现方法。
背景技术
当前游戏软件基本上都以图形化实现,由于现有图形化开发工具比较简单,能够实现的功能很少,因此现有游戏软件的开发人员一般都需要一个封装了硬件操作和图形算法、简单易用、功能丰富的图形开发环境,这个环境可以称作图形引擎,现有图形引擎基本上是以以下两种构架为基础构建的:
一是以基类根形式的构架为基础:基类根形式构架是以基本的几个抽象服务提供接口类为基础,并以接口与实现相分离为原则,来进行引擎实现,提供的具体功能通过实现类在引擎内部创建,而将接口供给用户使用。
二是以组件形式构架为基础:组件形式构架是把不同功能的模块做成互相独立的***,模块内部可以使用任何构架方式,只需要提供相应的接口即可。引擎以模块管理器为核心,支持插件形式组件增加方式,可以将新增的功能组件以插件的形式来******工作。
其中,基类根形式构架依赖于基本的抽象类的继承关系,这种继承关系导致引擎内部类继承了很多无用或重复的功能而变得虚大,且为保证接口的通用性使得实现的效率不高,导致整体效率偏低。
组件形式构架虽然因功能模块化而使整体效率较高,但其设计比较困难,实现比较复杂,各模块之间结构不够清晰,缺乏灵活性,不适合于跨平台需求的应用。
同时,上述两种图形引擎在实现时均需要开发人员大量重复的写底层代码,实现困难;而且所有的数据基本上都由引擎内部逻辑给出,修改的时候一是效率极低,需要专业的开发人员进行修改,并且还要经过很长的编译链接过程,同时,由于相关对象的管理都是由开发人员手动开发的管理模块进行管理,极容易出现错误,根本无法修改。如果要增加或删除对象,必须由专业的开发人员重新开发相应的管理功能,既加大了开发成本,也增加了***本身出现隐患的机率。
发明内容
有鉴于此,本发明提供了一种图形引擎实现方法,既具有基类根形式构架的灵活性,达到可跨平台的应用,又具有组件形式构架较高的整体效率,同时实现简单,修改容易。
为达上述目的,本发明的技术方案具体是这样实现的:
预先将所需的数据分类抽象为多个数据模块;
从所述数据模块中获取抽象数据;
根据所述抽象数据创建对象,并生成包含所有对象的指针的结构列表;
通过所述结构列表对所述对象进行创建、管理、分配资源和释放资源的操作。
较佳地,所述数据模块包括:
视角Viewport模块,镜头Camera模块,对象Object模块,文本Text模块和图形Graphic模块。
较佳地,所述数据模块为脚本文件形式。
由上述技术方案可见,本发明的这种图形引擎实现方法,结合了基类根形式构架与组件形式构架的优点,以模块化的脚本文件形式数据作为功能单元,是一种以数据为驱动的轻量级高度可配置的引擎,既具有基类根形式构架的灵活性,达到可跨平台的应用,又可以进行组件形式构架的实现,从而达到较高的整体效率。
附图说明
图1为本发明实施例的图形引擎架构示意图。
图2为本发明实施例的图形引擎运行流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明主要是提出了一种以数据为基础的图形引擎架构,预先将所需的数据分类抽象为多个数据模块,由脚本模块从所述数据模块中获取抽象数据,根据所述抽象数据创建对象,并生成所有对象的指针列表;通过所述列表对所有对象进行创建、管理、分配资源和释放资源等工作。
本发明的图形引擎架构如图1所示,包括:
全局模块101,由一个object类来进行继承,用于所有数据模块的管理,数据的初始化等工作;
多个数据模块102,如视角(Viewport)模块,镜头(Camera)模块,对象(Object)模块,文本(Text)模块,图形(Graphic)模块、其他模块等等,可根据不同功能所需的数据进行划分。数据模块102下的各种属性由所需的数据抽象得来,这些抽象数据是各种对象创建的基础,可以采用脚本文件形式实现。
脚本模块103,用于管理数据模块,识别、读取数据模块102中的各种抽象数据,脚本模块103可使用已经成熟的第三方脚本语言,也可以使用扩展的第三方语言,或者使用自己的设计脚本语言实现。
利用该图形引擎开发的程序在初始化时,将由脚本模块102将脚本形式的抽象数据读入,全局模块101图形引擎底层数据进行初始化,根据读入的抽象数据建立各种对象,比如相关的场景、场景内子物体等,同时在程序运行的过程中可以通过图形引擎的脚本模块102对这些对象进行动态改变,从而实现程序的各种功能应用。
利用该图形引擎开发的程序在初始化图形场景时,图形引擎中的全局模块102会同时建立一个结构列表,这个结构列表中包含整个场景中所有对象的指针,在程序进行消息队列循环之后,可以通过这个列表调用脚本模块102对所有对象的初始化、修改、销毁、释放资源工作。
具体图形引擎的运行过程如图2所示,包括如下步骤:
步骤201,通过脚本文件获取抽象数据;
从外部脚本文件中获取所需的抽象数据。
步骤202,底层数据初始化;
图形引擎进行底层数据初始化,准备运行环境;
步骤203,创建对象和结构列表;
根据获取的抽象数据创建各种对象,以及包含所有对象的指针的结构列表。
步骤204,进入消息循环队列;
利用图形引擎开发的程序运行,进入消息循环队列。
步骤205,根据逻辑需要对程序数据进行动态修改;
程序逻辑运行中可能需要对程序中的某些数据进行动态修改,如创建新对象、删除现有对象等操作,这时图形引擎将响应这些需求。
步骤206,通过结构列表对创建的对象进行修改;
图形引擎通过结构列表响应程序逻辑的动态修改需求,对创建的对象进行修改操作,修改完成后返回步骤204继续消息循环队列。
由上述的实施例可见,本发明的这种图形引擎实现方法,结合了基类根形式构架与组件形式构架的优点,以模块化的脚本文件形式数据作为功能单元,是一种以数据为驱动的轻量级高度可配置的引擎,既具有基类根形式构架的灵活性,达到可跨平台的应用,又可以进行组件形式构架的实现,从而达到较高的整体效率。同时对引擎内部对数据进行抽象定义,在外部配置文件里配置数据,可以极大的提升调试效率。同时通过插件的开发提供跨平台功能,因为本引擎是以数据为驱动的,并且高度可配置,所以跨平台不用做过多的修改,极大的提升开发效率与可复用性。
利用该图形引擎,开发人员只需要在配置文件中对相应数据进行设置,其中管理由引擎创建的结构列表进行自动管理,包括主循环,控制循环等,以往需要手动写的重复代码完全不必写,开发人员只需要专注于本身的逻辑即可。
在以往的图形引擎中,对于数据的修改是很烦琐的一件工作,所有的数据基本上都由程序内部逻辑给出,修改的时候一是效率极低,需要专业的开发人员进行修改,并且还要经过很长的程序编译链接过程,同时,由于相关对象的管理都是由开发人员手动开发的管理模块进行管理,在修改的过程中极容易出现错误,或者导致在程序的运行中埋下隐患,或者导致数据根本无法修改。如果要增加或删除对象,必须由专业的开发人员重新开发相应的管理功能,既加大了开发成本,也增加了程序本身出现隐患的机率。
而本发明的图形引擎,只需要对脚本文件形式的数据模块中的数据进行相应修改,同时对脚本文件进行重新载入,既可以供开发人员进行快速的重复调试,也可以供非专业人员如美术人员通过不断的改变参数来达到一定的美术效果,由于对象的管理全部由统一的结构列表进行管理,可以保证在修改参数后程序仍可以稳定运行,增加或删除对象也不必由专业的开发人员开发,同时可以保证***正常稳定的运行,开发人员只需要专注于程序本身的逻辑,提高***的质量,而不必应付烦琐的重复代码编写。
另外,本发明同时适用于3D与2D引擎,也可以在2D引擎中引入3D引擎的概念,使得手机开发等移动终端的图形开发可以在不损失2D引擎的运行效率下达到3D引擎可以达到的效果。由于本发明是以数据为驱动,使开发人员摆脱了底层的重复管理工作,并且极大的降低了人为的出错几率,可以使开发人员专注于逻辑的实现上,大大缩短产品的开发周期,最适用于早期的原型开发。同时开发人员可以方便的对以往很难发动的底层数据进行调试,并且完全不用重新进行编译,极高的提升了调试的效率。一些不具有开发技能的人员在一定的指导下也可以进行调试。
本发明图形引擎的数据驱动方式为跨平台开发带来极大的便利,由于所有管理功能都由底层自动实现,而配置本身的格式可以采取所有平台都支持的通用格式,所以在跨平台的过程中,已经抽象出的数据不必关心平台的差异,只需要开发出各个平台的相关接口就可以实现目的,而不是以往换一个平台就要全部重新开发。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (3)
1.一种图形引擎实现方法,其特征在于,该方法包括:
预先将所需的数据分类抽象为多个数据模块;
从所述数据模块中获取抽象数据;
根据所述抽象数据创建对象,并生成包含所有对象的指针的结构列表;
通过所述结构列表对所述对象进行创建、管理、分配资源和释放资源的操作。
2.如权利要求1所述的图形引擎实现方法,其特征在于,所述数据模块包括:
视角Viewport模块,镜头Camera模块,对象Object模块,文本Text模块和图形Graphic模块。
3.如权利要求1所述的图形引擎实现方法,其特征在于,所述数据模块为脚本文件形式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102864739A CN102508648A (zh) | 2011-09-23 | 2011-09-23 | 一种图形引擎实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102864739A CN102508648A (zh) | 2011-09-23 | 2011-09-23 | 一种图形引擎实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102508648A true CN102508648A (zh) | 2012-06-20 |
Family
ID=46220741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102864739A Pending CN102508648A (zh) | 2011-09-23 | 2011-09-23 | 一种图形引擎实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508648A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166552A (zh) * | 2014-08-15 | 2014-11-26 | 成都天奥信息科技有限公司 | 一种可移植内存位图图形库使用方法 |
CN104392408A (zh) * | 2014-10-20 | 2015-03-04 | 贵阳朗玛信息技术股份有限公司 | 一种展现图像的***及方法 |
CN105867911A (zh) * | 2016-03-24 | 2016-08-17 | 江苏大学 | 一种Iris 2D图形引擎的实现方法 |
CN107122184A (zh) * | 2017-04-21 | 2017-09-01 | 杭州万维镜像科技有限公司 | 一种虚拟现实软件开放式开发***及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226628A (zh) * | 2008-01-31 | 2008-07-23 | 华为技术有限公司 | 图形引擎装置及其数据处理方法 |
CN101908056A (zh) * | 2009-06-03 | 2010-12-08 | 商业对象软件有限公司 | 从任意二维数据集中识别和抽象可视化点的设备和方法 |
CN101916171A (zh) * | 2010-07-16 | 2010-12-15 | 中国科学院计算技术研究所 | 一种并发层次式的重复数据消除方法和*** |
-
2011
- 2011-09-23 CN CN2011102864739A patent/CN102508648A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226628A (zh) * | 2008-01-31 | 2008-07-23 | 华为技术有限公司 | 图形引擎装置及其数据处理方法 |
CN101908056A (zh) * | 2009-06-03 | 2010-12-08 | 商业对象软件有限公司 | 从任意二维数据集中识别和抽象可视化点的设备和方法 |
US20100312803A1 (en) * | 2009-06-03 | 2010-12-09 | Gong Zhiyong | Apparatus and method for identifying and abstracting a visualization point from an arbitrary two-dimensional dataset into a unified metadata for further consumption |
CN101916171A (zh) * | 2010-07-16 | 2010-12-15 | 中国科学院计算技术研究所 | 一种并发层次式的重复数据消除方法和*** |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166552A (zh) * | 2014-08-15 | 2014-11-26 | 成都天奥信息科技有限公司 | 一种可移植内存位图图形库使用方法 |
CN104166552B (zh) * | 2014-08-15 | 2017-10-13 | 成都天奥信息科技有限公司 | 一种可移植内存位图图形库使用方法 |
CN104392408A (zh) * | 2014-10-20 | 2015-03-04 | 贵阳朗玛信息技术股份有限公司 | 一种展现图像的***及方法 |
CN104392408B (zh) * | 2014-10-20 | 2019-04-16 | 贵阳语玩科技有限公司 | 一种展现图像的***及方法 |
CN105867911A (zh) * | 2016-03-24 | 2016-08-17 | 江苏大学 | 一种Iris 2D图形引擎的实现方法 |
CN105867911B (zh) * | 2016-03-24 | 2019-04-02 | 江苏大学 | 一种Iris 2D图形引擎的实现方法 |
CN107122184A (zh) * | 2017-04-21 | 2017-09-01 | 杭州万维镜像科技有限公司 | 一种虚拟现实软件开放式开发***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102609248B (zh) | 一种基于mda的综合航空电子***建模仿真平台 | |
CN112070871B (zh) | 一种跨平台三维可视化引擎构建***、方法、终端及储存介质 | |
Wang et al. | OpenSceneGraph 3.0: Beginner's guide | |
KR100876605B1 (ko) | 이기종간 연동형 프로그램 생성 장치 | |
CN110825362A (zh) | 低代码应用软件开发***及方法 | |
CN106547681B (zh) | 数据自动加载并复用模拟服务测试的方法和装置 | |
US9817639B2 (en) | Computational design method and interface | |
CN102449598A (zh) | 程序包设计和生成 | |
JP5722448B2 (ja) | 画像処理ソフトウェア開発方法、画像処理ソフトウェア開発装置、および、画像処理ソフトウェア開発プログラム | |
Benouda et al. | MDA approach to automate code generation for mobile applications | |
US20110072371A1 (en) | Application programming interface for user interface creation | |
CN102508648A (zh) | 一种图形引擎实现方法 | |
CN114398282A (zh) | 测试脚本的生成方法、装置、设备及存储介质 | |
CN105573763B (zh) | 一种支持rtos的嵌入式***建模方法 | |
CN114741071A (zh) | 一种应用构建方法及装置 | |
CN112755534B (zh) | 一种数据处理方法、装置和存储介质 | |
Lewis et al. | Native mobile development: a cross-reference for iOS and Android | |
CN114185522A (zh) | 页面主题定制方法、装置、电子设备及存储介质 | |
CN114356379A (zh) | 基于备份的服务升级方法、装置、设备及存储介质 | |
CN112463142A (zh) | 基于MDA的Android移动用户界面建模与转换方法 | |
CN105183491A (zh) | 跨平台的桌面gis***及其启动方法 | |
CN111680204A (zh) | 数据采集方法、装置及计算机可读存储介 | |
CN109240690A (zh) | 一种数据表单的界面生成方法和装置 | |
CN110297768A (zh) | 真机SDK兼容模拟器debug的方法、装置、设备及存储介质 | |
CN109558637A (zh) | 一种跨平台交互式飞机***动态原理图设计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120620 |