快速业务通道

Commons Collections僥楼永芝?匯? - 園殻秘壇利

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

集成GLPbuffer和Java Graphics2D

时间:2011-07-20 Thaddeus Keenan Simo

该程序在 2005 年又重新用 Java 编写了一次,主要设计工作由 David J. Eck 完成。其 Java 版本被称作 3D-XplorMath-J。它可在作为独 立程序运行,也可以作为 网站 上的一系列 applet 运行。该项目受到国际自然科学基金 (DUE Award #0514781) 一定程度上的支持。

OpenGL 集成中的设计问题

3D-XplorMath-J 最初使用 Java Graphics2D,我们的目标是找到集成 OpenGL 图形的最简单方法。3D-XplorMath-J 使用 接口 Renderer3D 定义的渲染程序来绘图。我们创建了另外一个渲染程序类,使该程序除了能执行现有 Java Graphics2D 渲染以外,还能执行 OpenGL 渲染。这 个新的渲染程序将设置 OpenGL 光照、影像和视点转换,然后使用 OpenGL 命令进行渲染和绘制。

OpenGL 提供了硬件加速 3D 绘图,借助改进的图形和极快的速度,能使用 Graphics2D 实现 3D 绘图。OpenGL 通过 JOGL API 使用 Java 实现。图 1 中的图像给出了改进图形的可视化表示,我们是通过 JOGL 实现的。从上面两幅图可以看出,JOGL 给出的蜗牛壳表示形式比 Java Graphics2D 绘制的更加清晰。但是,这点区别在不是很复杂的对象中并不明显。对于正在旋转的对象,这点区别会变得很明显,即使是卷形垫 ,这从下面两幅图中可以看出。

Commons Collections僥楼永芝?匯? - 園殻秘壇利

图 1. 图形比较。左上方:静止的蜗牛壳,使用 JOGL 绘制。右上方:静止的蜗牛壳,使用 Java Graphics2D 绘制。左下方:动态的卷形 垫,使用 JOGL 绘制。右下方:动态的卷形垫,使用 Java Graphics2D 绘制。

JOGL 中有三个类表示 OpenGL “可绘制区域”,即几个可以绘制 3D 图像的地方。它们是 GLCanvas、GLJPanel 和 GLPbuffer。其中, GLCanvas 和 GLJPanel 是两个常用的类,但在大型复杂的项目中,可能需要更改大量代码后,集成才能成功。GLPbuffer 是三个类中最少知道 的一个,但它拥有一些独特的功能,足以引起 Java 程序员的重视。在本例中,使用一个 pbuffer 来渲染对象似乎很简单,因为我们可以使用 与 Java Graphics2D 相同的框架,只要稍微修改为绘制到 pbuffer(在内存中存储屏幕以外的图片)即可。这样的图片然后可以作为一个标准 BufferedImage 被检索到,该 BufferedImage 可以被复制到屏幕。

GLCanvas 和 GLJPanel 是 GUI 组件。GLCanvas 更兼容 AWT,GLJPanel 更兼容 Swing。在 GLCanvas 中绘制会更快一点,但它是一个“重 量级”组件,在 Swing 中使用比较困难。在 Amy Fowler 和 Chris Campbell 合著的一些文章中对此问题进行了讨论。在 3D-XplorMath-J 中 使用这些类需要用 GLCanvas 或 GLJPanel 替换 JPanel。遗憾的是,JPanel 更多用在 3D 绘图中。例如,它用于显示 BufferedImage,这些 事情用 GLCanvas 或 GLJPanel 不是那么容易实现。请注意:至少在 Java 5.0 中是这样的。文章最后,我们将简要讨论 Java 6.0 中的一些 变化。

另一方面,JPanel 可以在不破坏程序 Graphics2D 绘制框架的情况下使用。GLPbuffer 表示内存中一个可用作 OpenGL 命令绘制界面的区 域,非常类似于 Graphics2D 的 BufferedImage。这样,就可以获得用 BufferedImage 形式绘制的图像副本。BufferedImage 然后可以使用标 准的 Graphics2D 技术复制到屏幕。在这篇文章中,我们将说明如何实现这一点,并讨论这样做的性能意义。使用 pbuffer 最主要是考虑到它 仍然是 JOGL 的一个试验方面,因而受各种平台不同程序的支持。绘制到缓冲区而不是直接绘制到 GLJPanel 或 GLCanvas 会变慢也是我们考 虑的一点。在 Linux、Mac 和 Windows 环境中经过测试后可以确定,这三者之间的差异很小,不会影响到 pbuffer 的使用。运行同一动画, 绘制 500 帧,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号