资源描述:
《基于opengl的三维曲面数据场动态显示》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于OpenGL的三维曲面数据场动态显示摘要在大数据量条件下,实时动态显示三维曲面较困难,其关键在于提高三维图形数据处理和图形绘制速度。通过对基于图形工业标准OpenGL实现三维曲面动态显示的原理和方法的讨论,提出采用OpenGL的双缓存、显示列表技术,大幅度提高了图形数据处理和刷新速度,保证了每帧数据图形绘制的连续性和完整性,成功实现了三维曲面数据场实时动态显示。关键词OpenGL三维曲面动态显示.L.编辑。1引言在某三维数据场中,数据随时间的变化而发生变化,为直观观察数据随时间变化的态势,需对数据场的变化实时动态显示
2、。利用网格曲面显示三维数据场是一种直观的方法,但需经过数据插值、投影、曲面拼接、消隐等处理后方可绘制图形,计算量较大。在数据量较大的情况下,实时动态显示三维曲面图形较困难,其关键在于提高每帧图形处理和绘制刷新速度,以保证每帧三维曲面显示时的连贯性和完整性。OpenGL是性能卓越的图形处理工具,采用OpenGL双缓存和绘图操作予编译技术,较好解决了三维图形数据处理和绘图刷新速度问题。利用VisualC++调用OpenGL的三维图形编程接口成功实现了大数据量的三维曲面图形的实时动态显示。2基于OpenGL的三维曲面动态显示原
3、理2.1基于OpenGL三维曲面图形显示原理OpenGL是独立于操作系统的开放式三维图形软件接口。其主要功能是将三维曲面通过顶点序列或像素点进行描述,并进行相应的透视、光照、纹理操作,最终转换成帧缓存中的图像数据,利用该图像数据进行三维曲面图形的着色。三维曲面图形显示归纳为以下几个步骤:(1)在三维场景中建立曲面绘制的模型。选用插值方法、参数曲面函数,计算曲面控制点,进行曲面重构;(2)设置视点和透视方式;(3)进行消隐、光照、纹理、明暗处理;(4)绘制场景,输出到屏幕窗口。图1三维曲面图形显示基本流程2.2利用双缓存实
4、现动态显示原理三维曲面动态显示需要连续地绘制三维曲面并显示场景,用不同的曲面数据刷新屏幕视窗。在OpenGL中利用双缓存技术,分配两个帧缓存区,在连续显示三维曲面时,一个帧缓冲区中的数据执行绘制曲面命令的同时,另一个帧缓存区中的数据进行图形显示。当前可见视频缓存称为前台视频缓存,不可见的正在绘图的视频缓存称为后台视频缓存。当后台视频缓存中的数据要求显示时,OpenGL就将它拷贝至前台视频缓存,显示硬件不断地读可见视频缓存中的内容,并把结果显示在屏幕上。应用双缓存,每一帧三维曲面只在绘制完成之后才显示出来,所以观察者可以看
5、到每一帧完整三维曲面,而不是曲面的绘制过程。使用双缓存实现三维曲面动态显示的步骤如下:(1)设置OpenGL窗口显示属性为双缓存机制:auxInitDisplayMode(AUX_DOUBLE
6、AUX_RGBA);(2)利用OpenGL基本绘图命令绘制三维曲面;(3)一帧曲面绘图结束后缓存拷贝,切换缓存:auxSmode);voidglBegin(Glenummode);voidglEnd(void);voidglEndList();(2)调用列表:voidglCallList(Gluintlist);3基于OpenGL
7、的三维曲面动态显示实现在使用VisualC++的MFCAppWizard建立应用程序框架后,生成了多个类,与OpenGL编程相关的类是视图类,主要的显示任务都在其中完成。3.1基于OpenGL绘图的基本设置3.1.1设置必要的编译链接环境OpenGL的图形编程接口包括的主要函数和库函数被封装在动态链接库中,因此在项目中要添加OpenGL32.dll、glu32.dll和glaux.dll三个库。同时在应用程序的视类头文件中加入OpenGL头文件说明:#include"glgl.h"#include"glglu.h"#
8、include"glglaux.h"3.1.2设置像素格式该部分设置绘图所需的像素格式,Windo()和glVie()定义了一个容纳绘制对象的最大空间区域,即视景体,位于视景体以外的部分都会被剪切掉;glVie(-1.0,1.0,-2.0,2.0,0.0,7.0);//视景体上、下、左、右、前、后的坐标分别为-1.0,1.0,-2.0,2.0,0.0,7.0;glVie.3.3三维曲面图形动态显示程序主框架在视类中产生Onhuitu()作为绘图的主程序。三维曲面图形动态显示子程序drayinit()中设置双缓存模式,是
9、实现动态显示的前提。drayinit();//初始化子程序jixu=20;//动态显示帧数atrix();glColor3f(0.0f,1.0f,1.0f);//颜色设置glLineode(AUX_DOUBLE
10、AUX_RGBA);//设置成双缓存模式}4某数据场三维曲面动态显示仿真系统实例根据以上思想,利用Open