3.1 OpenGL简介 中国斜草毡术大学 University of Science and Technology of China ·3.1.1图形API的发展 ·3.1.2 OpenGL的体系结构 ·3.1.3 OpenGL的函数 ·3.1.4一个简单例子 ·3.1.5安装编译说明 22
3.1 OpenGL简介 • 3.1.1 图形 API的发展 • 3.1.2 OpenGL的体系结构 • 3.1.3 OpenGL的函数 • 3.1.4 一个简单例子 • 3.1.5 安装编译说明 22
OpenGL的函数 中国斜学发术大享 University of Science and Technology of China 。 图元函数(primitive)what 季影以餐雲的優紧彩象莽叠養容体, 包括点、线段、 ·属性函数(attribute)how 控制图元在量示器上是云的方式:线段颜色、多边形填充模 武、☒标题文本弱孛体等 ·视图函数(viewing) 一设置虚拟照相机的位置、朝向和镜头参数等。 变换函数(transformation) 一对对象进行诸如平移、旋转和缩放等变换操作。 ·输入函数(input)GLUT 一处理来自键盘、鼠标等设备的输入 ·控制函数(control)GLUT 一与窗口系统通信,初始化程序,处理运行时的错误等 ·查询函数(query) - 确定特定系统或设备的性能参数,查询相机参数、帧缓冲区 等AP相关的信息 23
OpenGL的函数 • 图元函数(primitive) what – 系统可以显示的低级对象或最基本的实体,包括点、线段、 多边形、像素、文本和各种曲线/曲面等 • 属性函数(attribute) how – 控制图元在显示器上显示的方式:线段颜色、多边形填充模 式、图标题文本的字体等 • 视图函数(viewing) – 设置虚拟照相机的位置、朝向和镜头参数等。 • 变换函数(transformation) – 对对象进行诸如平移、旋转和缩放等变换操作。 • 输入函数(input) GLUT – 处理来自键盘、鼠标等设备的输入 • 控制函数(control) GLUT – 与窗口系统通信,初始化程序,处理运行时的错误等 • 查询函数(query) – 确定特定系统或设备的性能参数,查询相机参数、帧缓冲区 等API相关的信息 23
Open GL的状态 中国斜学我术大学 University of Science and Technology of China ·OpenGL是一个有限状态机(state machine)的黑盒 一状态:持续性参数,如颜色、线型、材质属性等 来自应用程序的输入改变machine的状态或者产生可见 的输出 ·OpenGL函数有两种类型 一定义图元 ·如果图元可见,则被输出 ·顶点如何被处理以及图元的外观由状态控制 一改变状态 ·属性函数 ·视图函数 ·变换函数 ·在3.1以后版本,大部分状态变量由应用程序定义并发送到着 色器 24
OpenGL的状态 • OpenGL是一个有限状态机(state machine)的黑盒 – 状态:持续性参数,如颜色、线型、材质属性等 – 来自应用程序的输入改变machine的状态或者产生可见 的输出 • OpenGL函数有两种类型 – 定义图元 • 如果图元可见,则被输出 • 顶点如何被处理以及图元的外观由状态控制 – 改变状态 • 属性函数 • 视图函数 • 变换函数 • 在3.1以后版本,大部分状态变量由应用程序定义并发送到着 色器 24
面向对象方面的缺陷 中国斜学我术大草 niversity of Scie nce and Technology of China ·OpenGL不是面向对象的,因此逻辑上的一 个函数却对应着多个OpenGL函数: glVertex3f glVertex2i glVertex3dv ·内在存储模式是相同的 ·在C++中很容易创建重载函数,但效率却成 为主要问题 25
面向对象方面的缺陷 • OpenGL不是面向对象的,因此逻辑上的一 个函数却对应着多个OpenGL函数: glVertex3f glVertex2i glVertex3dv • 内在存储模式是相同的 • 在C++中很容易创建重载函数,但效率却成 为主要问题 25
OpenGL函数名称的 中国学我术大草 格式 University of Science and Technology of China 函数的功能 glVertex3f(x,y,z) b-byte ub -unsigned byte 属于GL库 维度或参数个数 short GLU库:glu 2-(x,Y) x,y,z为f1oat us -unsigned short i-int GLUT库:glut 3-(x,Y,z) 4-(xY,z,w) -float glVertex3fv(p) d -double p为指向f1oat的指针 注意每部分的大小写 36
OpenGL函数名称的 格式 glVertex3f(x, y, z) glVertex3fv(p) 属于GL库 GLU库:glu GLUT库:glut 函数的功能 注意每部分的大小写 维度或参数个数 x, y, z为float p为指向float的指针 b - byte ub - unsigned byte s - short us - unsigned short i - int ui - unsigned int f - float d - double 2 - (x,y) 3 - (x,y,z) 4 - (x,y,z,w) 26