网站大量收购闲置独家精品文档,联系QQ:2885784924
  1. 1、本文档共74页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[openGL讲义

HCIMultimedia Lab 图形与多媒体 第六章 三维计算机图形学(四) OpenGL简介 汪国平 wgp@graphics.pku.edu.cn 2000年秋季学期研究生课程 一、OpenGL简介 什么是OpenGL OpenGL的组成 一个简单的绘图程序 OpenGL函数命名规范 NT环境中OpenGL的命令解释流程 什么是OpenGL 是一个功能强大的图形库,用户可以很方便地开发所需要地有多种特殊视觉(如光照,纹理,透明,阴影)的三维图形。 与软硬件平台无关的三维图形软件包,可运行于多种窗口系统之上 包含图元生成、投影、光照、光栅化等图形显示过程所需的功能 发展历史 前身是由SGI公司为其图形工作站开发的IRIS GL,是一个工业标准的三维图形软件接口。 向其他平台移植时,开发了OpenGL, 有GL的功能,而且是开放的,使用于多种硬件平台及操作系统, 用户可以创建出接近光线跟踪的高质量静止或动画的三维彩色图象,而且是要比光线跟踪算法快一个数量级。 OpenGL的组成 OpenGL库 包括115个基本函数 函数以gl开头 例:glColor3f(), glTranslate3f(). 完成图元的定义、几何变换、投影等功能 OpenGL的组成 OpenGL实用库 实用函数43个 函数以glu开头 例:gluPerspective(); 完成更高层的图形处理如曲线曲面的生成、图象操作等 OpenGL辅助库 包括函数31个 函数以aux开头 例:auxInitWindow(); 主要用于窗口管理 主要特点 OpenGL可以在网络上工作,即客户机/服务器型,显示图形的计算机(客户机)可以不是运行图形程序的计算机(服务器),客户机与服务器可以是不同类型的计算机,只要两者服从相同的协议。 OpenGL是与硬件无关的软件接口,可以在多种硬件平台上运行,使得OpenGL的应用程序有较好的移植性。 OpenGL的工作顺序 构造几何要素(点,线,多边形,图象,位图),创建对象的数学描述。 在三维空间上放置对象,选择有利的场景观察点。 计算对象的颜色,这些颜色可能直接定义,或由光照条件及纹理间接给出。 光栅化,把对象的数学描述和颜色信息转换到屏幕的象素。另外,也可能执行消隐,以及对象素的操作。 OpenGL程序的基本结构 第一部分是初始化部分: 主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。 这些状态一般都用函数glEnable(???), glDisable(???) 来设置,???表示特定的状态。 第二部分设置观察坐标系下的取景模式和取景框大小。主要用到三个函数: void glViewport(left,top,right,bottom); 设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示); void glOrtho(left,right,bottom,top,near,far); 设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体; void gluPerspective(fovy,aspect,zNear,zFar); 设置投影方式为透视投影,其取景体积是一个截头锥体,在这个体积内的物体投影到锥的顶点。? 第三部分是OpenGL的主要部分,使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系,几何变换,光照处理等等。 注:移植到使用MFC框架下的Windows程序中,由于Windows自身有一套显示方式,需要进行一些必要的改动以协调这两种不同显示方式。 绘图前的一些准备工作 清除当前窗口的内容,以免影响绘图的效果 void glClearColor ( red , green , blue , alpha ); 给定当前屏幕的背景设置颜色,red , green , blue , alpha 为RGBA颜色值. void glClear ( mask ); 命令标志要清除的缓冲区。可以清除的缓冲区如下表所示:? 可以用glClearColor, glClearDepth, glClearIndex, glClearStencil, glClearAcc函数为各自对应的缓冲区赋值。若要同时清除多个缓冲区,使用上表中所列的mask位或组合,在速度上要比使用多次调用glClear函数要快得多。 描述几何要素 按一定的顺序给出几何要素的顶点,glVertex命令指定一个顶点,并在生成顶点后,把当前颜色,纹理坐标,法线等值赋给这个顶点。 函数 void glVertex{

您可能关注的文档

文档评论(0)

wendan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档