快速业务通道

SWT全接触 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
关键的作用。

XML error: The image is not displayed because the width is greater than the maximum of 572 pixels. Please decrease the image width.

GLScene类的最后两个方法用于处理重绘和场景绘制。当场景何时需要重绘的时候,第一个方法为其他 类提供重绘操作的接口。第二个方法主要用于让继承GLScene的子类覆写。其缺省实现只是简单的清除了 颜色和深度缓存,通过装在鉴别矩阵(identify matrix)重新恢复调整系统。

4.3 3D Chart

利用上一节的准备,我们已经将主应用程序进行了划分。这个图像显示了4组数据。每一组数据都是由 相同的固定点所组成,每个点都是从0.0到10.0之间的一个正值。

示例程序运行在一个非常简单的Eclipse view上,唯一值得注意的是Refresher,这个线程将强迫 OpenGL场景被周期性的重绘。通过这种方法,当视图被移动或旋转的时候,component总能进行有效的更 新渲染效果。run()方法调用的时间间隔为100毫秒,所以理论上的图像速度能达到每秒10帧。

每个数据集合的点的值是用圆柱体来表示的。通过执行3个GLU调用,我们就能够绘制圆柱体:其中的 两个用于渲染圆柱体两头的圆盘部分,另外一个用于渲染圆柱体的四周。例如,要渲染两个单元高的圆柱 体,你可以用下面的代码来实现:

第一行申请了绘制圆盘和圆柱所需的二次曲面。然后整个场景被逆时针旋转了90度,以便圆柱体可以 被垂直绘制。下一步,底部的圆盘被渲染,然后是圆柱体的四周。在我们能够绘制顶部圆盘的时候,通过 场景转换(scene translation),我们可以在Z轴移动两个单元。最后一个圆盘随后被绘制出来,调整系 统通过向回移动两个单元来进行恢复。最后,由第一行申请的二次曲面被释放掉。

按照上述方法运行程序是很费时间的。当仅绘制一个圆柱体的时候,效率低下不是一个很严重的问题 ,但如果要绘制成百个对象的话就会严重影响程序的执行性能。对于这种情况,OpenGL给出了一个解决这 个问题的技巧,就是使用显示列表(display list)。

一个显示列表是一组已编译的OpenGL命令。定义命令集合的列表被放在glNewList(int list, int mode) 和 glEndList()方法调用之间。第一个参数必须是一个正整数,可以用来唯一的表示一个被创建的 显示列表。你可以让GL用 glGenLists(int n)方法为你生成多个列表标识符。第二个参数用于指定列表是 否被编译或编译之后立即被执行。大多数情况下你都需要编译这个列表。然后,你可以使用 glCallList (int list)方法来显示整个列表。

5 结束语

至此,有关于SWT与OpenGL图形有关的粗略功能就介绍完了,有鉴于3D图形对象和OpenGL的复杂性,一 篇这样篇幅的文章肯定不能覆盖其每一个角落,我只能给各位一个动手尝试机会。希望整篇专题没有让你 枯燥得睡着,并因此有了一个不错的SWT的基础,我的目的就达到了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号