|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
该程序在2005年又从头用Java编写了一次,次要计划事情由DavidJ.Eck完成。其Java版本被称作3D-XplorMath-J。它可在作为独立程序运转,也能够作为网站上的一系列applet运转。该项目遭到国际天然迷信基金(DUEAward#0514781)必定水平上的撑持。
OpenGL集成中的计划成绩
3D-XplorMath-J最后利用JavaGraphics2D,我们的方针是找到集成OpenGL图形的最复杂办法。3D-XplorMath-J利用接口Renderer3D界说的衬着程序来画图。我们创立了别的一个衬着程序类,使该程序除能实行现有JavaGraphics2D衬着之外,还能实行OpenGL衬着。这个新的衬着程序将设置OpenGL光照、影象和视点转换,然后利用OpenGL命令举行衬着和绘制。
OpenGL供应了硬件减速3D画图,借助改善的图形和极快的速率,能利用Graphics2D完成3D画图。OpenGL经由过程JOGLAPI利用Java完成。中的图象给出了改善图形的可视化暗示,我们是经由过程JOGL完成的。从下面两幅图能够看出,JOGL给出的蜗牛壳暗示情势比JavaGraphics2D绘制的加倍明晰。可是,这点区分在不是很庞大的对象中其实不分明。关于正在扭转的对象,这点区分会变得很分明,即便是卷形垫,这从上面两幅图中能够看出。
.图形对照。左上方:运动的蜗牛壳,利用JOGL绘制。右上方:运动的蜗牛壳,利用JavaGraphics2D绘制。左下方:静态的卷形垫,利用JOGL绘制。右下方:静态的卷形垫,利用JavaGraphics2D绘制。
JOGL中有三个类暗示OpenGL“可绘制地区”,即几个能够绘制3D图象的中央。它们是GLCanvas、GLJPanel和GLPbuffer。个中,GLCanvas和GLJPanel是两个经常使用的类,但在年夜型庞大的项目中,大概必要变动大批代码后,集成才干乐成。GLPbuffer是三个类中起码晓得的一个,但它具有一些共同的功效,足以引发Java程序员的器重。在本例中,利用一个pbuffer来衬着对象仿佛很复杂,由于我们可使用与JavaGraphics2D不异的框架,只需略微修正为绘制到pbuffer(在内存中存储屏幕之外的图片)便可。如许的图片然后能够作为一个尺度BufferedImage被检索到,该BufferedImage能够被复制到屏幕。
GLCanvas和GLJPanel是GUI组件。GLCanvas更兼容AWT,GLJPanel更兼容Swing。在GLCanvas中绘制会更快一点,但它是一个“重量级”组件,在Swing中利用对照坚苦。在AmyFowler和ChrisCampbell合著的一些文章中对此成绩举行了会商。在3D-XplorMath-J中利用这些类必要用GLCanvas或GLJPanel交换JPanel。遗憾的是,JPanel更多用在3D画图中。比方,它用于显现BufferedImage,这些事变用GLCanvas或GLJPanel不是那末简单完成。请注重:最少在Java5.0中是如许的。文章最初,我们将扼要会商Java6.0中的一些变更。
另外一方面,JPanel能够在不损坏程序Graphics2D绘制框架的情形下利用。GLPbuffer暗示内存中一个可用作OpenGL命令绘制界面的区域,十分相似于Graphics2D的BufferedImage。如许,就能够取得用BufferedImage情势绘制的图象正本。BufferedImage然后可使用标准的Graphics2D手艺复制到屏幕。在这篇文章中,我们将申明怎样完成这一点,并会商如许做的功能意义。利用pbuffer最次要是思索到它仍旧是JOGL的一个实验方面,因此受各类平台分歧程序的撑持。绘制到缓冲区而不是间接绘制到GLJPanel或GLCanvas会变慢也是我们考虑的一点。在Linux、Mac和Windows情况中经由测试后能够断定,这三者之间的差别很小,不会影响到pbuffer的利用。运转统一动画,绘制500帧,每帧画500个恣意巨细的球,每种平台失掉的速率以下:
类全部动画的估量工夫每帧的估量工夫GLCanvas39285ms=39.285s78.57ms=.07857sGLJPanel42325ms=42.325s84.65ms=.08465sGLPbuffer50945ms=50.945s101.89ms=.10189s类全部动画的估量工夫每帧的估量工夫GLCanvas48795ms=48.795s97.59ms=.09759sGLJPanel53161ms=53.161s106.322ms=.106322sGLPbuffer82221ms=82.221s164.442ms=.164442s类全部动画的估量工夫每帧的估量工夫GLCanvas50813ms=50.813s101.626ms=.101626sGLJPanel67704ms=67.704s135.408ms=.135.408sGLPbuffer70703ms=70.703s141.406ms=.141406s这些表显现了利用GLPbuffer损耗的工夫其实不长,在Mac平台上体现得比其他平台更明显。因而我们决意利用pbuffer来试着集成,利用它的实验特征来碰试试看。用于天生这些表的程序代码可从示例代码下载。个中另有一个交互式程序,用于以交互体例对照这两种手艺。
<p>
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点: |
|