OpenGL:基本图形与矩阵变换
需积分: 38 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坐标之间的映射关系。
点击了解资源详情
点击了解资源详情
点击了解资源详情
398 浏览量
2008-12-14 上传
125 浏览量
2022-09-22 上传
2021-02-18 上传
119 浏览量
昨夜星辰若似我
- 粉丝: 50
- 资源: 2万+
最新资源
- 行业资料-电子功用-全片簧弹压接触式电流连接器的介绍分析.rar
- js-weather-api-ajax-web-0615-public
- 易语言高仿2006QQ登陆
- Liquipedia Dark Mode-crx插件
- cysill:有关如何使用威尔士语拼写和语法检查器插件以及在线 API、Cysill Online 的文档和示例。 ~~ 关于如何使用“Cysill Online”插件和在线 API 进行威尔士拼写和语法检查的文档和示例
- Gerenciador产品
- newspeak:GoJS中的聊天应用程序,用户可以在其中选择要与其他人交谈的地理位置
- 易语言验证码例程源码,易语言验证码模块
- 行业资料-电子功用-全电动注塑机的注射压力监控方法的介绍分析.rar
- 朋友圈分享转发文章赚钱系统源码.zip
- cordova-build-automation-presentation:基于ebollensWebBlocks-presentations的Reveal.js的Cordova构建自动化演示
- 美赛备战学习资料美赛备战学习资料
- turf-quantile
- NxBRE(规则引擎)的基本帮助
- SCC0219:简介和网站开发资料库
- Currencyconverter:在这个项目中,我创建了一个Web应用程序来转换货币。我用了flask,python,html和bootstrap