仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 539|回复: 8
打印 上一主题 下一主题

[学习教程] 发布一篇集成GLPbuffer和Java Graphics2D

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:08:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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>
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 14:57:41 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
若相依 该用户已被删除
板凳
发表于 2015-1-29 11:36:12 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-6 00:35:00 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
透明 该用户已被删除
5#
发表于 2015-2-14 16:38:52 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
莫相离 该用户已被删除
6#
发表于 2015-3-4 08:22:06 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
因胸联盟 该用户已被删除
7#
发表于 2015-3-11 18:01:59 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
简单生活 该用户已被删除
8#
发表于 2015-3-19 05:49:34 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
小女巫 该用户已被删除
9#
发表于 2015-3-27 08:34:26 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-22 07:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表