- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
?
?
基于CrystalSpace的自定义插件的设计与实现
?
?
论文导读:自定义插件的设计、实现及使用流程如图1所示。游戏引擎,基于CrystalSpace的自定义插件的设计与实现。
关键词:插件,软件复用,游戏引擎,CrystalSpace
?
1.CrystalSpace及其核心SCF
1.1CrystalSpace
在介绍CrystalSpace之前,首先介绍一下游戏引擎和3D游戏引擎,游戏引擎是用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等,它是一个处理事务的系统,同时它也是一个控制模块,向所有的子系统发出命令[1]。而3D游戏引擎,除了包含游戏引擎的所有功能外,它还负责处理3D世界的数据结构(包括所有的光源、行动)以及从玩家或相机所在的视点渲染3D世界[1]。
CrystalSpace(以下简称CS)是一个开源的3D游戏引擎。除了具备3D游戏引擎应有的功能外,其自身还包含许多独有的特点。首先,CS的框架是一个高度模块化的框架,该框架能更好的为用户提供服务,并且使用户使用CS更方便。其次,CS是一个由构件和库组成的包,虽然它很多的功能都偏向于3D游戏的处理,但是它同样也适用于其他方面的应用,这主要是得益于CS中的大部分插件和库的相互独立性,这使得用户在CS中,可以只使用自己需要的插件以及自定义插件,而不会与其他插件相关联或受到其他插件的影响。科技论文,游戏引擎。最后,CS广泛的支持各种不同类型的硬件和软件平台,具有很好的跨平台性[2]。科技论文,游戏引擎。
1.2SCF
由于CS高度模块化的框架,而作为其框架核心的SCF(ShareClassFacility,共享类工具)为用户设计与开发基于CS的自定义插件提供了便利。科技论文,游戏引擎。SCF与COM(ComponentObjectModel,组件对象模型)[4]类似,但只是一个轻量级的COM。SCF与COM相比,其使用更加简单、方便,并且SCF屏蔽了COM中很多繁琐的部分,却同时具备COM的大部分优势[3]。
在CrystalSpace中SCF用来管理引用计数、系统插件、自定义插件和抽象接口。在插件的开发中,SCF技术实现了类接口与类实现的分离,这一方面,使插件使用者只用关心类接口的功能及接口的使用方法,而不用关心它的具体实现;另一方面,它对类实现进行了很好的封装,不会将类实现的任何细节暴露给用户,并且插件开发者对类实现的修改不会对插件的使用造成影响[2]。另外,SCF还提供了插件对象注册器和插件管理器使CS能自动的完成对插件的管理,用户只需要书写少量的代码就能实现对插件的加载、使用及卸载。
2.设计和使用自定义插件
自定义插件的设计、实现及使用流程如图1所示,用户自定义插件设计时,必须在SCF中的对象注册器中注册,并由插件管理器统一管理,而应用程序对插件的调用及加载也必须通过对象注册器和插件管理器来完成。
图1自定义插件的设计、实现及使用流程
2.1设计自定义插件
用户自定义插件的实现包括定义插件的API,自定义插件的具体实现,自定义插件的编译及自定义插件的注册四个部分。
1)定义用户自定义插件的API
在CrystalSpace中,使用SCF定义插件的API,其优势在于,将接口的定义和实现进行明确的分离。操作步骤包括:
Ⅰ.定义插件API所在文件“Myapi.h”
Ⅱ.定义API的版本号;
Ⅲ.定义抽象类“iMyApi”,类名以“i”开头,用于标识该类是一个SCF接口。
Ⅳ.定义两个纯虚函数DoSomthing()和GetSomething()用于设置/获得一个3D坐标。下面是API定义的具体代码:
structiMyApi:publicvirtualiBase
{SCF_INTERFACE(iMyApi,1,0,0);
virtualvoidDoSomething(intparam,constcsVector3)=0;
virtualintGetSomething()const=0;};
2)创建自定义插件的实现(头文件)
下面是用户自定义插件具体实现的头文件“myplug.h”的定义。其操作步骤包括:
Ⅰ.实现类必须同时继承iMyApi和iComponent接口,以保证能使用插件管理器来管理插件。
Ⅱ.定义初始化函数,用于完成插件的初始化工作。具体代码如下:
classMyPlugin:publicscfImplementation2MyPlugin,iMyApi,iComponent
{…………
virtualboolInitialize(iObjectRegistry*);
vi
您可能关注的文档
- 基于Steemit区块链的新型科技知识服务体系设计研究.docx
- 基于RCC技术门禁系统设计.docx
- 基于hadoop技术的电商大数据分析.docx
- 基于BIM的商业地产项目管理分析.docx
- 基于ANSYS的手套包装机输送机构电机支架设计分析.docx
- 《GB/T 33352-2016E电子电气产品中限用物质筛选应用通则 X射线荧光光谱法》.pdf
- 中国国家标准 GB/T 33352-2016E电子电气产品中限用物质筛选应用通则 X射线荧光光谱法.pdf
- GB/T 33352-2016E电子电气产品中限用物质筛选应用通则 X射线荧光光谱法.pdf
- 重庆市面向武汉大学定向选调2024届大学毕业生45笔试历年典型考题及解题思路附答案详解.docx
- 黑龙江七台河经济开发区选调及调任公务员2024年国家公务员考试考试大纲历年真题1222笔试历年典型考.docx
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
最近下载
- (100题)2024时事政治考试题库.doc VIP
- 《“跨学科教学”在初中英语课堂中的实践探究》课题研究方案.doc
- 获奖教案《爷爷变成了幽灵》(语言领域).pdf
- 难治性肺癌中国专家共识解读.pptx VIP
- 第1课《消息二则》课件(共42张PPT) 统编版语文八年级上册.pptx VIP
- 2024年畜禽屠宰企业兽医卫生检验人员考试试题.docx
- 浅析中日两国女性对化妆的态度-以两国女大学生为研究对象-日语毕业论文.doc VIP
- 设备改进与创新技术的应用.pptx
- 【必威体育精装版原创】深度学习:《1.3.2_第1课时_有理数的减法》学历案 (5).docx VIP
- 沃森(VicRuns)VD120A-GS系列变频器说明书用户手册.doc
文档评论(0)