基本的OpenGL语法
- OpenGL基本函数库用来描述图元、属性、几何变换、观察变换和进行许多其他的操作。
- OpenGL基本库中的函数名要以gl为前缀,并且函数名中每一个组成词的第一个字母要大写。
- OpenGL函数也要求专门的数据类型。OpenGL采用专门的内置数据类型名来描述数据类型。
- 每个数据类型名以大写字母GL开头,名字中其余部分是用小写字母表示的标准数据类型名。
相关库
- OpenGL实用函数提供了一些例程,可以设置观察和投影矩阵,利用线条和多边形近似法来描述复杂对象,使用线性近似法显示二次曲线和样条曲线,处理表面绘制操作。
- 为了使用OpenGL建立一个图形,首先必须在视频屏幕上设置显示窗口。我们不能直接使用基本的OpenGL函数来创建显示窗口,因为该库中只有与设备无关的函数,并且窗口管理操作依赖于所用的计算机。
- OpenGL的X窗口系统扩充提供了一组以glx为前缀的函数。
- OpenGL实用函数工具包(GLUT)提供了与任意屏幕窗口系统进行交互的函数库。GLUT库函数以glut为前缀,该库中包含了描述与绘制二次和样条曲线及曲面的方法。
头文件
- 存取WGL函数的头文件是windows.h
- 如果我们使用GLUT处理窗口管理操作,就不需要引入gl.h和glu.h。我们可以使用以下头文件:
- 在Apple OS X系统中,头文件引入语句是
使用GLUT进行显示窗口管理
- 使用OpenGL实用库的第一步是初始化GLUT。该初始化函数也能任何命令行变量。
- 完成GLUT初始化的语句是
- 需要说明的是显示窗口在创建时要给定一个标题。
- 使用OpenGL函数创建一个图并将图的定义传递给GLUT函数glutDisplayFunc,即将图赋给显示窗口。
- 利用下列函数,所有已创建的显示窗口连同其中的图形内容将被**。它显示初始图形并使程序进入检查鼠标或键盘等设备输入的无穷循环之中。
- glutInitWindowPosition可用来给出显示窗口左上角的初始位置,该位置使用以屏幕左上角为原点的整数坐标来表示。
- glutInitWindowSize函数用来设定显示窗口的初始宽度和高度的像素数。
- 我们可以使用glutInitDisplayMode函数来设定显示窗口的缓存和颜色模型等选项。该函数的变量使用符号化GLUT常量赋值。
一个完整的OpenGL程序
- 将显示窗口的背景颜色设定为白色,可以使用OpenGL函数:
- 该函数前面的三个变量将红、绿、蓝三个颜色分量设定为1.0。glClearColor函数的第四个参数称为指定颜色的alpha值。alpha值为0.0表示完全透明的对象,而alpha为1表示不透明的对象。
- glClearColor命令将某颜色赋给显示窗口,但它不能让显示窗口在屏幕上出现。glClear可以使赋值的窗口得到显示。
- 变量GL_COLOR_BUFFER_BIT是一个OpenGL符号常量,用来指定它是颜色缓存中的位值。该缓存将使用glClearColor函数中指定的值来设定。
- glColor函数的后缀3f表示我们在指定三个RGB颜色分量时使用浮点数。
- 我们可以使用下面两个函数来设置投影类型和其他观察参数:
- 这表示使用正投影将世界坐标系二维矩阵区域的内容映射到屏幕上,区域的x坐标值从0.0到200.0,y坐标值从0.0到150.0。只要是在该矩形内定义的对象,都会在显示窗口中。
- GLU函数gluOrtho2D定义了显示窗口以(0.0,0.0)为左下角,以(200.0,150.0)为右上角。
- 要调用合适的函数来建立线段。下面的程序定义了一个从整数笛卡儿端点坐标(180,15)到(10,145)的二维直线段。
- 函数glFlush强制执行由计算机系统存放在缓存中不同位置的OpenGL函数,其位置依赖于OpenGL的实现。glFlush将强制清空所有缓存来处理OpenGL函数。
OpenGL的错误处理
- 当OpenGL发现在对基本库子程序或GLU子程序的一次调用中有错误时,就在内部记录一个出错编码,而造成出错的子程序被忽略。
- 一旦出现一个出错编码,在你的程序明确查询OpenGL出错状态之前不会再记录另外的出错编码:
- 该调用返回当前的出错编码并清楚内部出错标志。如果返回的值等于OpenGL符号常数GL_NO_ERROR,则什么事也没有。
- OpenGL出错编码
转载于:https://my.oschina.net/liyangke/blog/2252212