Java平台编程的对提高游戏图形研究
最近,Java平台的性能已经大大提高游戏开发来满足要求。然而,Java 1.1的渲染性能,所使用的仍然是大约三分之一的当前Web浏览器用户,备受瞩目的游戏是不够的。因此,实际上,Java游戏开发者,尤其是那些使用applet,必须考虑这在大多数环境中。为了解决上述问题,本文提出了一种便携式窗口工具包架构称为本体,窗口工具包(CWT)能力:(1)达到高渲染性能尤其是在Java 1.1应用程序和applet时使用举呈现小部件类;(2)支持AWT / Swing兼容的部件,所以因此类可以很容易地应用到现有的Java游戏;(3)定义一个通用架构,支持多种图形库,如AWT举和OpenGL,如Java VM和多个虚拟机器。NET CLR,多个操作系统(OSs)如Microsoft Windows、Mac OS和基于unix的操作系统;(4)api来直接操作举为程序员提供一对一的映射对象和其他属性。CWT也被应用到一个在线的Java游戏系统证明该建议的体系结构。版权c 2006年约翰·威利与儿子,有限公司
介绍
由于现代计算机游戏开发正变得越来越复杂,许多商业游戏是由大型团队,通常从20到50个成员
编程团队的生产力起着非常重要的作用,减少投放市场的时间,这影响了游戏行业的主流语言。
1990年以前,大多数游戏发展主要是在汇编语言来提高性能[2]。在1990年代,C语言与相对较高的生产率在游戏行业成为流行,因为硬件和编译器技术不断改进的C语言的性能。软件公司为例,1993年,ID。[3]发达的末日游戏大多数代码是用C写的此外,相比,C,c++语言增加了生产力几乎没有性能损失由于面向对象的特性,如可维护性和可重用性。
因为太阳微系统公司(缩写为太阳)发布的Java语言[4]在1995年,Java已成为越来越受欢迎的由于其更高的生产率比C / c++和可移植性。[5]从IDC在1998年的一份报告显示,在纯Java编写代码,而不是c++增加了整体的生产力因素的30%,编码阶段仅65%。以来,研究了使用Java开发工具包(JDK)1.0.2中,这些数据可能是更大的今天由于modernJava 2平台的改进功能StandardEdition(J2SE)。菲普斯[6]给出了类似的结果,并得出结论,Java是30 - 200%比c++更有效率。随着互联网的发展,Java applet连同其高portability-write一次,anywhere-has运行在互联网上流行起来。这些优势使Java成为候选人之一,游戏开发的主流语言。例如,雅虎游戏[7]ArcadePod.com[8],本体游戏[9 - 11]和江湖[12]使用Java。
然而,大多数上述Java游戏是低调的游戏,因为Java程序通常有较低的性能,尤其是在图形用户界面(GUI)组件,也称为小部件,这使得游戏开发商不愿用高调的游戏。一般来说,在Java 1.0编写的程序的性能低于20至40倍的C / C++[13]。经过几个重大的修订在Java虚拟机(JVM),调整Java程序使用J2SE 1.4跑平均只有20 - 50%低于调整C / c++程序[13]。不幸的是,早期的Java程序的GUI部分仍然执行缓慢。因为大多数游戏项目,尤其是知名游戏,密集的GUI操作,如动画或复杂的场景,达到高渲染性能是至关重要的。微软的渲染性能高、DirectDraw和Direct3D举(或DirectGraphics举7.0及以后)[14]或OpenGL(OpenGraphics库)[15]commonlyused访问专门的硬件特性,如直接访问视频内存显卡,构建3 d场景和编写着色器代码。
因此,Java是备受瞩目的游戏项目的一个重要话题将举或OpenGL为Java GUI设计。
Java是最早的GUI机制抽象窗口工具包(AWT)[16]。
为了保持Java的跨平台能力,AWT旨在提供一组通用的部件使用对等架构[17]保持本地操作系统(OSs)的外观,如Win32 windows组件[18]在Microsoft windows和主题[19]在基于unix的操作系统。这些小部件被称为重量级组件[20]。然而,GUI设计一个平台可能看起来不同在其他平台上,和AWT部件不能满足应用的需求,需要更复杂的小部件,如树和表,和先进的图形功能,如灌装和颜色管理模式。
为了解决上述问题,AWT,太阳announcedJava FoundationClasses(JFC)[21]1998年,其中包括Swing和Java 2d。
Swing提供了更复杂的小部件基于轻量级Java AWT 1.1的支持,不依赖于底层操作系统的本机窗口小部件。Java 2 d使先进的2 d图形功能,图像、文字和印刷。虽然JFC的功能通常是有利于应用程序需要更复杂的小部件或高级图形,其实现遭受贫穷的渲染性能与重量级组件相比。
为了提高渲染性能,太阳开始访问专门的硬件特性通过举在J2SE 1.4[22]和OpenGL J2SE 5.0(或1.5)[23]。然而,Java 2d OpenGL-based J2SE的管道(缩写为OpenGL管道)5.0带来更多错误,不是在真实的应用程序中使用。为了解决这个问题,Java SE 6.0引入了一个新设计的OpenGL管道,提供更好的稳定性和性能比在J2SE 5.0[24]。虽然呈现performancein J2SE 1.4和beyondhas被大大提高,许多硬件加速特性,需要配置默认情况下禁用。除非用户显式配置适当的属性在Java控制面板,applet游戏不会充分受益于硬件加速[25]。
因此,为applet游戏用户不方便,特别是对于那些没有获得许可,修改系统属性。虽然签署了Java applet可以修改系统属性,也影响其他的修改Java程序运行在JRE。考虑过去工作也呈现相关的性能问题,IBM的Standard Widget Toolkit(SWT)[26]是一个替代AWT / Swing产生更多的本土一样的外观和更高的性能比早期的Java版本,因为它所有的部件设计为重量级的。
然而,SWT并不完全利用专门的硬件特性对于游戏应用程序,所以它可以执行效率备受瞩目的游戏。与其他本地小部件的方法,举或OpenGL合并到Java GUI设计的解决方案征求等。[27]叫DirectJ设计一组api,可以直接访问通过Java Native Interface(JNI)举,因此在J2SE取得重要的图形性能提升。OpenGL的Java(GL4Java)[28]包装OpenGL通过JNI api。然而,GL4Java已经过时的2001年的最后一个版本。OpenGL的Java绑定API(JOGL)[29]也是一个一对一的映射的OpenGL API。轻量级的Java游戏库(LWJGL)[30]是另一个图书馆专门针对写作比赛。
JOGL和LWJGL现在仍在积极开发。Java 3 d[31]是一个高级API,OpenGL和举实现,用于创建、渲染和处理3 d场景图。使用这些库可以大大提高Java的渲染性能。然而,这些解决方案仍然受到 讨论的两个问题如下。
首先,尽管举和OpenGL渲染性能好,他们不能提供自己的小部件系统。
因此,当混合其他小部件系统,如Win32窗口组件,举或OpenGL,小部件的性能仍局限于系统(或更糟)。
此外,本机窗口小部件通常控制重涂时间和过程,这可能会导致一些不良反应,如闪烁。
第二,许多上述解决方案仅支持在Java 2平台上。不幸的是,微软Java虚拟机(MSVM)[32],这是在Java 1.1.4中,目前使用的31.0%的浏览器用户(计算统计数据的最近的两个月期间[33]),而JRE 1.4的百分比。x和JRE 1.5.0分别是24.5%和41.8%。因此,对于游戏程序员,它仍然是重要的applet游戏可以在大多数环境中。
使用Java 1.1,其他原因:
•许多applet游戏开发基于Java 1.1过去当微软ie浏览器只支持Java 1.1.4(例如,本体游戏[9 - 11]仍然继续使用过去MSVM的兼容性代码);
•J #语言。网只支持Java 1.1;
•大多数pda或手机使用个人Java支持Java 1.1。
在本文中,我们的方法就是加强Java 1.1的图形性能通过使用举或OpenGL渲染所有小部件,数据,图像和文本。我们提出一个窗口工具包称为本体,窗口工具包(CWT),一个快速呈现轻量级GUI工具包,使其所有小部件通过本机图形库。CWT可以自动切换运行时的硬件加速功能,这样用户不需要手动设置属性。此外,CWT还具有以下特点:•它支持AWT / Swing部件兼容,而且,因此,类可以很容易地应用于现有的Java游戏;
•它定义了一个通用架构,支持多种图形库(Java AWT,举和OpenGL),多个虚拟机(JVM和。
NET CLR)和多个平台(基于unix的操作系统,Windows、Mac OS等);
•它为编程人员提供了额外的api来直接操作举对象和其他gamerelated属性,和,因此,高级程序员可以举的控制能力而不必等待功能支持的太阳。
本文的其余部分组织如下。
首先,类定义的体系结构。
然后,我们的实现策略和CWT的现状,其次是实验结果和性能分析,包括一个真实的应用程序类。
最后,我们工作的结论。
结论
本文设计一种便携式AWT / Swing架构,叫做节律窗口工具包(CWT),对Java游戏开发高渲染性能,尤其是applet游戏编写的Java 1.1。
波变换的特征可以概括如下。
(1)高性能达到在Java 1.1应用程序和applet使用举呈现小部件。
MSVM CWT表现良好,目前使用的大约三分之一的网民。
我们演示了CWT的性能将它应用于一个真正的applet游戏,麻将[9]。
在我们测量的基准,在MSVM游戏运行的性能提高了7.58倍,约10%,快于最新的Java SE 6.0(73年建立)与全面启用硬件加速。
(2)awt / Swing compatiblewidgets都受支持。
因此,类可以很容易地上边现有的Java游戏。
(3)一个通用的体系结构,支持多个图形库,如AWT举和OpenGL,如Java VM和多个虚拟机器。
净CLR和多个OSs如Microsoft Windows、Mac OS和定义基于unix的操作系统。
(4)programmersare providedwith one-to-onemappingAPIs直接manipulateDirectX对象和其他属性高级程序员。
本文的贡献包括以下5点:(1)一般便携式小部件定义Java游戏开发架构;(2)CWT-AWT CWT-DX3已经实现;(3)提出的高性能设计实验已经证明;(4)性能不一致在Java版本中已经指出;(5)类的可用性将它应用于一个真正的applet游戏,麻将,已经证明了这一点。
未来的扩展包括OpenGL实现和举9.0实现。在前,因为OpenGL可用在很多平台上,OpenGL实现跨平台的考虑。在后者中,因为。J #可以通过内置访问举9.0 api和微软提供了Java 1.1代码转换成J的工具#代码,使用。J #是另一种替代方法,以获得最新的DirectX组件。
全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026
返回首页
如转载请注明来源于www.biyezuopin.vip
|