OpenGL:基本图形与矩阵变换

需积分: 38 8 下载量 118 浏览量 更新于2024-07-13 收藏 525KB PPT 举报
"本资源主要介绍了在OpenGL中如何进行多边形面的绘制,包括三角形和四边形等基本图形的绘制方式,以及OpenGL中矩阵变换的基本操作,如模型视图矩阵、投影矩阵和纹理矩阵的选择与管理,还提到了视口变换的概念。" 在OpenGL中,多边形面的绘制是构建3D场景的基础。本资源重点讨论了两种最常见的多边形面——三角形和四边形的绘制方法: 1. **三角形面的绘制**:OpenGL提供了三种绘制三角形的方法: - `GL_TRIANGLES`:独立绘制每个三角形,可以用来构建任何复杂的多边形。 - `GL_TRIANGLE_STRIP`:连续绘制三角形,每次增加一个顶点形成新的三角形。 - `GL_TRIANGLE_FAN`:以第一个顶点为中心,连续绘制三角形,每次增加一个顶点。 2. **四边形面的绘制**:主要通过`GL_QUADS`和`GL_QUAD_STRIP`来实现: - `GL_QUADS`:绘制单独的四边形,适合绘制规则的矩形或正方形。 - `GL_QUAD_STRIP`:连续绘制四边形,每次增加两个顶点。 这些模式都是OpenGL的图元类型,它们定义了如何将顶点数据解释为屏幕上的形状。 接下来,资源中详细阐述了OpenGL中的**三维图形变换流程**,包括: - **视图变换**:调整物体在视窗中的位置和方向,模拟观察者的位置和朝向。 - **模型变换**:改变物体自身的形状和位置,如旋转、平移和缩放。 - **投影变换**:将3D空间的物体转换到2D投影空间,常见的有透视投影和平行投影。 - **窗口至视区的变换**:将投影后的坐标映射到屏幕的像素坐标。 在这些变换过程中,OpenGL使用了**矩阵栈**来进行高效的变换管理。矩阵栈分为模型视图矩阵、投影矩阵和纹理矩阵栈,通过`glMatrixMode()`函数可以选择当前操作的矩阵栈。矩阵栈的操作包括: - **glLoadIdentity()**:清空栈顶矩阵,用单位矩阵替换,撤销之前的所有变换。 - **glPushMatrix()**:保存当前栈顶矩阵,将其压入栈中,便于后续恢复。 - **glPopMatrix()**:弹出栈顶矩阵,恢复之前的变换状态。 - **glLoadMatrix()**:直接设置栈顶矩阵为给定的矩阵,实现任意变换。 - **glMultMatrix{fd}()**:将给定矩阵与栈顶矩阵相乘,并替换栈顶矩阵。 此外,还介绍了**基本几何变换**,如: - **平移变换**:通过`glTranslatef()`和`glTranslate{fd}()`函数实现物体在空间中的移动。 - **放缩变换**:使用`glScalef()`和`glScale{fd}()`函数对物体进行大小调整。 - **旋转变换**:利用`glRotatef()`和`glRotate{fd}()`函数让物体绕指定轴旋转。 最后,资源简要提及了**视口变换**,它定义了窗口内用于渲染的区域,即视口,可以通过`glViewport()`函数进行设置,视口的定义对图形的最终显示有着直接影响。视口可以是整个窗口,也可以是窗口的一部分,视口变换的本质是确定像素和3D坐标之间的映射关系。