基于 OpenGL 的三维曲面数据场动态显示
摘 要 在大数据量条件下,实时动态显示三维曲面较困难,其关键在于提高三维图形数据
处理和图形绘制速度。通过对基于图形工业标准 OpenGL 实现三维曲面动态显 示的原理
和方法的讨论,提出采用 OpenGL 的双缓存、显示列表技术,大幅度提高了图形数据处理
和刷新速度,保证了每帧数据图形绘制的连续性和完整性,成 功实现了三维曲面数据场
实时动态显示。
关键词 OpenGL 三维曲面 动态显示
1 引言
在某三维数据场中,数据随时间的变化而发生变化,为直观观察数据随时间变化的态势,
需对数据场的变化实时动态显示。利用网格曲面显示三维数据场是一种直观 的方法,但
需经过数据插值、投影、曲面拼接、消隐等处理后方可绘制图形,计算量较大。在数据量
较大的情况下,实时动态显示三维曲面图形较困难,其关键在于 提高每帧图形处理和绘
制刷新速度,以保证每帧三维曲面显示时的连贯性和完整性。
OpenGL 是性能卓越的图形处理工具,采用 OpenGL 双缓存和绘图操作予编译技术,较好
解决了三维图形数据处理和绘图刷新速度问题。利用 Visual C++调用 OpenGL 的三维图形
编程接口成功实现了大数据量的三维曲面图形的实时动态显示。
2 基于 OpenGL 的三维曲面动态显示原理
2.1 基于 OpenGL 三维曲面图形显示原理
OpenGL 是独立于操作系统的开放式三维图形软件接口。其主要功能是将三维曲面通过顶
点序列或像素点进行描述,并进行相应的透视、光照、纹理操作,最终 转换成帧缓存中
的图像数据,利用该图像数据进行三维曲面图形的着色。三维曲面图形显示归纳为以下几
个步骤:
(1)在三维场景中建立曲面绘制的模型。选用插值方法、参数曲面函数,计算曲面控制
点,进行曲面重构;
(2)设置视点和透视方式;
(3)进行消隐、光照、纹理、明暗处理;
(4)绘制场景,输出到屏幕窗口。
图 1 三维曲面图形显示基本流程
2.2 利用双缓存实现动态显示原理
三维曲面动态显示需要连续地绘制三维曲面并显示场景,用不同的曲面数据刷新屏幕视窗。
在 OpenGL 中利用双缓存技术,分配两个帧缓存区,在连续显示三维曲面时,一个帧缓冲
区中的数据执行绘制曲面命令的同时,另一个帧缓存区中的数据进行图 形显示。当前可
见视频缓存称为前台视频缓存,不可见的正在绘图的视频缓存称为后台视频缓存。当后台
视频缓存中的数据要求显示时,OpenGL 就将它拷贝至 前台视频缓存,显示硬件不断地读
可见视频缓存中的内容,并把结果显示在屏幕上。
应用双缓存,每一帧三维曲面只在绘制完成之后才显示出来,所以观察者可以看到每一帧
评论2