使用GLUT进行显示窗口管理
我们从使用简化的、最少的操作来显示一个图开始。使用 OpenGL 实用库的第一步是初始化GLUT。该初始化函数也能处理任何命令行变量,但不需要在第一个示例程序中使用参数。完成GLUT初始化的语句是
glutInit (&argc,argv);
接着,需要说明的是显示窗口在创建时要给定一个标题。这是用下列语句实现的:glutCreateWindow ("An Example OpenCL Program");这里的单一变量可以是用做显示窗口标题的任意字符串。
下面,我们需要指定显示窗口中要显示什么内容。为此,使用 OpenGL函数创建一个图并将图的定义传递给GLUT函数glutDisplayFunc,即将图赋给显示窗口。作为一个例子,假定我们在称为lineSegment的过程中已经有了线段的OpenGL描述程序。则调用下列函数就将线段描述送到显示窗口:
glutDisplayFunc (lineSegment);
但是显示窗口还未出现在屏幕上。我们需要使用另一个GLUT函数来完成窗口处理操作在执行下列语句后,所有已创建的显示窗口连同其中的图形内容将被激活:
glutMainLoop ();
该函数必须是程序中的最后一个。它显示初始图形并使程序进入检查鼠标或键盘等设备输入的无穷循环之中。我们的第一个例子不是交互式的,所以程序仅仅显示其中的图形直到显示窗口关闭。在后面的几章里,我们将考虑怎样修改 OpenGL程序,使之能处理交互输人。尽管我们创建的显示窗口有默认的位置和大小,但还是可以使用另外的 GLUT 函数来设定这些参数。glutInitwindowPosition 可用来给出显示窗口左上角的初始位置。该位置使用以屏幕左上角为原点的整数坐标来表示。例如,下面的语句指定了显示窗口左上角应该在屏幕左边界向右50个像素屏幕上边界之下100像素的位置上:
glutInitWindowPosition (50,100);
类似地,glutInitwindowsize 函数用来设定显示窗口的初始宽度和高度的像素数。因此要指定一个宽度为400像素、高度为300像素(如图3.2所示)的显示窗口相应的语为glutInitWindowSize (400.300):
在显示窗口已出现在屏幕上之后,我们可重新设定它的位置和大小。
图3.2位于相对于视频监视器左上角的(50100)位置的400 x300 显示窗口
我们还可以使用glutInitDisplayMode函数来设定显示窗口的缓存和颜色模型等选项该函数的变量使用符号化 GLUT 常量来赋值。例如下面的命令指出显示窗口使用单个缓存且使用由红、绿、蓝(RCB)三元素组成的颜色模型来选择颜色值:
glutInitDisplayMode (GLUT_SINGLEGLUT RGB):
传送给该函数的常量值利用逻辑或操作组合起来。实际上,单缓存和 RGB 颜色模型是默认的选项。但现在使用该函数是为了强调要使用这些选项来设定我们的显示。后面将会更详细地讨论颜色模型及动画应用的双缓存和观察三维场景的参数选项等其他显示选项。