论文部分内容阅读
HTML5是下一代的HTML。近年来,随着HTML5技术的高速发展,出现了越来越多的基于HTML5技术的网页应用,现代浏览器也均提供了对HTML5技术的支持。这种情形也表现在智能机领域里,Apple ios平台的浏览器Safari和Android平台内置的浏览器也提供了对HTML5技术的支持,这为手机应用开发者带来了新的机会。传统的手机应用开发,对应于ios平台需要采用Objective-C语言,对应于Android平台则要使用Java语言,这无疑对跨平台的应用开发带来了巨大的障碍。而基于HTML5技术开发手机应用,则可以只采用JavaScript一门语言,即可直接运行在不同平台的手机浏览器上,所以,HTML5技术越来越被手机应用开发者所重视。但目前手机浏览器对基于HTML5技术的手机应用提供的支持很有限,这尤其表现在大型游戏的渲染效率上。因为在本质上,浏览器的渲染运算都是发送给CPU完成的,并没有利用GPU实现硬件加速。基于这样一个背景,本文给出并实现了一个新的方案,即不利用手机浏览器而设计本地化的支持HTML5规范的解决方案,实现了一款基于ios平台支持HTML5规范的游戏引擎,该引擎实现了硬件加速,并且完全按照HTML5的标准,实现了大量HTML5规范的功能。作者作为该引擎的主要开发人员,参与了该引擎的设计和实现。本文的主要工作集中在以下几个方面:1设计了该引擎的整体技术架构。该引擎本质上是一款支持HTML5标准的本地浏览器,设计的初衷是为了更好的支持大型游戏的开发,所以在设计的过程中,削弱了一部分浏览器的功能,而对另外一些与游戏密切相关的功能进行了强化。2在该引擎中集成一款JavaScript引擎。本文引擎的实现语言是Objective-C,为了使其和JavaScript进行通信,在本文引擎中集成了一款名为iosJavaScriptCore的JavaScript引擎,这是本文引擎的基石。3在该引擎中实现了Ajax技术。详细阐述了Ajax技术的实现方案,通过该技术,该引擎可以完成和服务器的异步通信,从而做到支持网络游戏的开发。4在该引擎中实现了HTML5Audio功能。Audio功能是使用HTML5技术进行音频播放的基础。5在该引擎中实现了HTML5Canvas功能。这是本文最重要的工作,基于OpenGL ES技术,实现了一个使用GPU硬件加速的渲染系统。本文详细的分析了这个系统的实现过程,阐述了怎样基于OpenGL ES技术建立一个渲染循环系统,分析了OpenGL ES FBO(Frame Buffer Object)技术的使用以及Shader程序的使用。另外,详细阐述了该引擎对HTML5Canvas API的实现,包括了JavaScript层canvas对象的获取,getContext(’2d’)对象的获取以及src、drawImage等代表性API的实现,并详细阐述了在实现图像数据到内存的缓存时,所采用的Cache方案以及Core Graphics技术的使用。最后,本文展示了一款作者所在团队制作的已发布到Apple公司App Store的社交游戏,该游戏基于JavaScript语言和HTML5技术,内容庞大,运行在本文引擎上。通过对该游戏实际游戏画面和功能的阐述,证明了本文引擎的性能。