第二章 坐标系与图元

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

所有数据类型都以GL开头,其后跟对应C 数据类型,前面首字母为u表示是无符号数 据类型 OpenGL还定义了GLvoid数据类型,它常用 于将数组指针作为参数的OpenGL函数中 OpenGL常量都以GL开头,所有字母大写, 单词之间用下划线连接,如 GL_COLOR_BUFFER_BIT
2.2 函数命名的语法
直线 在OpenGL中,表示一段线段 可以指定一系列彼此相连接的线段,甚至 是闭合的线段 组成连线系列的直线是根据它们终点位置 的顶点决定的
多边形 是由单闭合的线段循环包围的区域 一般是通过填充它的内部像素绘制而成 在OpenGL中,合法的多边形满足以下两个 条件: (1)多边形的边不能相交 (2)多边形必须是凸多边形
世界坐标系 物体坐标系 观察坐标系 设备坐标系 屏幕坐标系
世界坐标系
全局坐标系 建立描述其他坐标系的参考框架 整个场景的"最大"坐标系 是一个绝对坐标,不随观察者方向的变化 而变化
物体坐标系
局部坐标系 每个物体有自己的物体坐标系 与其他物体的物体坐标系相互独立
观察坐标系(摄像机坐标系)
GL_TRIANGLE_SRT 三角形的连接串 IP GL_TRIANGLE_FAN 连接成三角形的扇形系列 GL_QUADS GL_QUAD_STRIP GL_POLYGON 四个顶点被解释为一个四边形 四边形的连接串 一个简单的凸多边形的边界

第二章 坐标系与图元
邱航 qiuhang@ 电子科技大学计算机科学与工程学院 电子科技大学数字媒体技术研究所
本章内容
第一节 坐标系简介 第二节 OpenGL基础 第三节 OpenGL基本图元
第一节 坐标系简介
几个常用的坐标系 OpenGL坐标系
1.1 几个常用的坐标系
画线 在点(0,0,0)和点(5,5,5)之间绘制一条直线 glBegin(GL_LINES); glVertex3f(0.0f,0.0f,0.0f); glVertex3f(5.0f,5.0fL_POLYGON); glVertex2f(0.0f,0.0f); glVertex2f(0.0f,3.0f); glVertex2f(4.0f,3.0f); glVertex2f(4.0f,0.0f); glEnd();
第二节 OpenGL基础 OpenGL基础
OpenGL数据类型 函数命名的语法 OpenGL是种状态机
2.1 OpenGL数据类型 OpenGL数据类型
后缀 b s i f d ud us ui 数据类型 8位整数 16位整数 32位整数 32位浮点数 64位浮点数 8位无符号整数 16位无符号整数 32位无符号整数 对应的C语言类型 singed char short int或long float double unsigned char unsigned short unsigned int 或unsigned long OpenGL类型 GLbyte GLshort GLint,GLsizei GLfloat,GLclampf GLdouble,GLclampd GLubyte,GLboolean GLushort GLuint,GLenum, GLbitfield
<库前缀> <命令> <参数个数> <参数类型> 如:glColor3f(…) gl:表示该函数出自gl库 Color:表示函数用于指定颜色(命令首字 母大写) 3f:表示该函数使用3个浮点参数 有些函数带有后缀"v",表示它将一个指向 向量(数组)的指针作为参数
非向量版本: glColor3f(1.0f,1.0f,1.0f); 向量版本: GLfloat color[]={1.0,1.0,1.0}; glColor3fv(color);
【注意】 void glBegin(GLenum mode); 标志一个顶点数据列表的开始,这个顶点 列表描述了一个几何图元,mode参数指定 了图元的类型 void glEnd(); 标志一个顶点数据列表的结束 图元的绘制必须在这两个函数之间进行
10种基本图元类型 10种基本图元类型
GL_LINES GL_POLYGON GL_POINTS GL_LINE_STRIP GL_LINE_LOOP
世界坐标系 以屏幕中心为原点(0, 0, 0),面对屏幕,水平向右是 x轴,垂直向上是y轴,屏幕指向外的为z轴,是右手 坐标系
当前绘图坐标系——绘制物体时的坐标系. 程序刚初始化时,世界坐标系和当前绘图坐标系是 重合的.当用glTranslatef(),glScalef(), glRotatef() 对当前绘图坐标系进行平移,伸缩,旋转变换之后, 世界坐标系和当前绘图坐标系不再重合.改变以后, 再用glVertex3f()等绘图函数绘图时,都是在当前绘 图坐标系进行绘图,所有的函数参数也都是相对当 前绘图坐标系来讲的.
GL_TRIANGLES GL_QUADS GL_QUAD_STRIP GL_TRIANGLE_STRIP GL_TRIANGLE_FAN
几何图元的名称及含义
值 GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES 单个的点 一对顶点被解释为一段直线段 一系列的连接直线段 和上面相同,但是第一个顶点和最后一个顶点彼 此相连 三个顶点被解释为一个三角形 含 义
3.2 OpenGL基本图元绘制 OpenGL基本图元绘制
画点 glBegin(GL_POINTS); //选择点作为图元 glVertex3f(0.0f,0.0f,0.0f); //指定一个点 glVertex3f(1.0f,2.0f,1.5f); //指定另一个点 glEnd(); //完成绘制
【注意】 OpenGL总是按照应用程序的发送顺序执行 命令. 因此状态影响应该是由最接近绘制的状态 改变函数来决定. 同时主要注意状态改变对效率的影响
第三节 OpenGL基本图元 OpenGL基本图元
基本图元描述 OpenGL 基本图元绘制
3.1 基本图元描述
点 用一组浮点数表示 所有顶点在OpenGL内部计算时都作为三维点处理 顶点的二维形式(x,y),默认z=0 齐次坐标(x,y,z,w)
例如: glColor3f(1.f,0.f,0.f); glBegin(GL_POLYGONS); glVertex3f(-.5f,0.f,0.f); glEnd(); glColor3f(0.f,0.f,1.f); glBegin(GL_POINTS); glVertex3f(0.f,0.f,0.f); glEnd(); glBegin(GL_POINTS); glVertex3f(.5f,0.f,0.f); glEnd();
2.3 OpenGL是种状态机 OpenGL是种状态机
OpenGL是个种状态机.设置它的各种状态 (或模式),这些状态将一直生效,直到它 们被修改 许多表示模式的状态变量可以用glEnable() 和glDisable()函数进行启用和禁用 每个状态变量(或模式)都有一个默认值, 在任何时候都可以查询状态变量的当前值
和观察者相关的坐标系 摄像机观察点位于原点,X轴向右,Z轴向前(朝向 屏幕内部),Y轴向上
设备坐标系
与图形设备的物理参数有关的坐标系
屏幕坐标系
显示器的平面坐标系 坐标原点位于屏幕左上角,水平向右为X轴 方向,垂直向下为Y轴方向,以像素为单位
1.2 OpenGL坐标系 OpenGL坐标系
相关文档
最新文档