这个程序的运行结果是黑色背景下的一个绚丽多彩的三角形(如图2所示)。这里你可以看到用OpenGL绘制图形非常容易,只需要几条简单的语句就能实现强大的功能。如果你缩放窗口,三角形也会跟着缩放。这是因为OnSize通过glViewport(0, 0, width, height)定义了视口和视口坐标。glViewport的第一、二个参数是视口左下角的像素坐标,第三、四个参数是视口的宽度和高度。
OnSize中的glMatrixMode是用来设置矩阵模式的,它有三个选项:GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE。GL_MODELVIEW表示从实体坐标系转到人眼坐标系。GL_PROJECTION表示从人眼坐标系转到剪裁坐标系。GL_TEXTURE表示从定义纹理的坐标系到粘贴纹理的坐标系的变换。
glLoadIdentity初始化工程矩阵(project matrix);gluOrtho2D把工程矩阵设置成显示一个二维直角显示区域。
这里我们有必要说一下OpenGL命令的命名原则。大多数OpenGL命令都是以"gl"开头的。也有一些是以"glu"开头的,它们来自OpenGL Utility。大多数"gl"命令在名字中定义了变量的类型并执行相应的操作。例如:glVertex2f就是定义了一个顶点,参数变量为两个浮点数,分别代表这个顶点的x、y坐标。类似的还有glVertex2d、glVertex2f、glVertex3I、glVertex3s、glVertex2sv、glVertex3dv……等函数。
那么,怎样画三角形呢?我们首先调用glColor4f(1.0f, 0.0f, 0.0f, 1.0f),把红、绿、蓝分量分别指定为1、0、0。然后我们用glVertex2f(100.0f, 50.0f)在(100,50)处定义一个点。依次,我们在(450,400)处定义绿点,在(450,50)处定义蓝点。然后我们用glEnd结束画三角形。但此时三角形还没画出来,这些命令还只是在缓冲区里,直到你调用glFlush函数,由glFlush触发这些命令的执行。OpenGL自动改变三角形顶点间的颜色值,使之绚丽多彩。
还可通过glBegin再产生新的图形。glBegin(GLenum mode)参数有:
GL_POINTS,GL_LINES, GL_LINE_STRIP,GL_LINE_LOOP, GL_TRIANGLES,GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN,GL_QUADS, GL_QUAD_STRIP, GL_POLYGON
文章来源于领测软件测试网 https://www.ltesting.net/