丁 智,肖 宇
OpenGL是图形硬件的软件接口[1-2],由于其具有稳定性好、可移植性强等特点,目前已成为广泛应用的跨平台三维图形绘制引擎,也是当前事实上应用最广泛的三维图形标准[1].OpenGL的一个显著特点是它独立于操作系统、窗口系统和硬件系统环境,这种运行平台的无关性造就了OpenGL的成功,但同时也为OpenGL应用开发带来了不便.OpenGL程序员必须利用不同操作系统平台提供的图形用户界面(Graphics User Interface,GUI)支持函数,才能开发OpenGL应用[3],而掌握相关既定窗口系统的接口功能函数和可视化编程方法,通常需要较长时间的学习[4].为了解决初学者的这一困难,美国Silicon Graphics公司的MARK K开发了一个简易的窗口系统工具包GLUT(OpenGL Utility Toolkit)[5].GLUT是 一 个跨平台的轻量级窗口系统,能够满足一般图形应用的开发要求.由于几乎所有操作系统上都标配了GLUT包,因此以GLUT为基础的OpenGL程序可以不加修改地运行于不同平台,如Windows、Linux和Mac等.
然而,GLUT仅提供了简单的事件处理功能,并不支持单复选按钮、拖动条、组合框、文本框等控件,更没有提供类似于下拉菜单和对话框等图形用户界面元素[5].这给基于OpenGL和GLUT开发图形应用程序的用户带来了不便.在通常情形下,大多数图形应用程序需要通过GUI实现对图形绘制过程的交互式控制[6],以增加相关程序的灵活性和界面友好性.
另一方面,OpenGL具有强大的图形处理能力,能够胜任GUI所需的所有绘制功能.因此可以借助GLUT的窗口事件处理功能,并配合OpenGL绘制功能实现自己所需的图形控件,为应用程……