版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章虚拟现实建模工具第四章虚拟现实建模工具1虚拟现实系统图形程序设计接口OpenGL虚拟现实建模语言VRML虚拟现实建模工具3Dsmax
虚拟现实系统图形程序设计接口2虚拟环境构建主要是应用三维图形技术,包括图形的构建图形的显示4.1虚拟现实系统图形程序设计接口虚拟环境构建主要是应用三维图形技术,包括4.1虚拟现实系统图3在虚拟现实系统中,模型是十分复杂的;显示:软件:3D图形应用程序硬件:3D图形加速卡接口:三维图形应用程序接口(3DAPI)沟通3D图形应用程序和3D图形加速卡在虚拟现实系统中,模型是十分复杂的;4三维图形编程接口(3DAPI)多达50多种选择大公司和在图形应用方面获得广泛认可的公司提供的三维API引擎;OpenGLQuick-Draw3DDirect3D三维图形编程接口(3DAPI)多达50多种5OpenGL:SGI优点:适用于跨平台的应用开发,可运行在Unix、WindowsXP、WindowsNT、及Mac平台上缺点:不能完成某些高级功能,如某些文件操作功能OpenGL:SGI6Quick-Draw3D(QD3D):Apple公司优点:跨平台的应用开发,具有某些高级功能;是面向对象的图形系统;Quick-Draw3D(QD3D):Apple公司7Direct3D:Microsoft1996年发布的三维API,是交互式媒体技术家族DirectX中的一员;具有某些高级功能;Direct3D:8为什么是OpenGL?(1)OpenGL:性能优越,计算环境广泛,个人计算机-工作站-超级计算机;(2)虚拟环境平台OpenInventor、WorldToolKit、MulitgenCreator\Vega是以OpenGL为基础开发的;为什么是OpenGL?(1)OpenGL:性能优越,计算环境9(3)许多在计算机界具有领导地位的计算机公司纷纷采用OpenGL作为三维图形应用程序设计界面,OpenGL程序具有广泛的移植性;(3)许多在计算机界具有领导地位的计算机公司纷纷采用Open104.1OpenGL简介什么是OpenGLOpenGL的组成OpenGL的工作流程OpenGL的基本操作OpenGL程序的基本结构4.1OpenGL简介什么是OpenGL11一、什么是OpenGL?功能强大的图形库:可开发多种特殊视觉(如光照,纹理,透明,阴影)的三维图形;软硬件平台无关的跨平台三维图形引擎,运行于多种窗口系统之上;包含图元生成、投影、光照、光栅化等图形显示过程所需的功能一、什么是OpenGL?功能强大的图形库:可开发多种特殊视觉12OpenGL的发展历史:前身是由SGI公司为其图形工作站开发的IRISGL,是一个工业标准的三维图形软件接口。向其他平台移植时,开发了OpenGL有GL的功能,而且是开放的,适用于多种硬件平台及操作系统,用户可以创建出接近光线跟踪的高质量静止或动画的三维彩色图象,而且是要比光线跟踪算法快一个数量级。OpenGL的发展历史:13二、OpenGL的组成OpenGL库包括115个基本函数函数以gl开头例:glColor3f(),glTranslate3f().完成图元的定义、几何变换、投影等功能二、OpenGL的组成14OpenGL实用库实用函数43个函数以glu开头例:gluPerspective();完成更高层的图形处理如曲线曲面的生成、图象操作等OpenGL实用库15OpenGL辅助库包括函数31个函数以aux开头例:auxInitWindow();主要用于窗口管理OpenGL辅助库16主要特点OpenGL可以在网络上工作,即客户机/服务器型客户机:显示图形服务器:运行图形程序客户机与服务器可以不同类型,但两者服从相同的协议。OpenGL的硬件无关性——好的移植性主要特点OpenGL可以在网络上工作,即客户机/服务器型17三、OpenGL基本工作流程(1)根据基本图形单元(点,线,多边形)建立景物模型,并对景物模型进行数学描述。(2)在三维空间中放置景物模型,并设置视点。(3)计算模型中物体的颜色(直接定义或由光照及纹理间接给出)(4)光栅化,把模型数学描述和颜色信息转换至屏幕上在上述过程中,可执行消隐处理等操作三、OpenGL基本工作流程(1)根据基本图形单元(点,线,18四、OpenGL的基本操作图元绘制图元属性OpenGL变换(几何变换、投影变换、裁剪变换、视口变换)OpenGL图形的描绘四、OpenGL的基本操作图元绘制191、图元绘制图元的表示点:三维坐标(x,y,z)齐次坐标(x,y,z,1)线段:两个端点多边形:顶点序列矩形:左下角点、右上角点绘制图元定义一个顶点voidglVertex{234}{sifd}[v](TYPEcoords);例:glVertex3f(1.0,1.0,1.0);1、图元绘制图元的表示例:glVertex3f(1.0,1.20绘制函数要在glBegin与glEnd之间调用。glBegin标志几何要素定义的开始,glEnd函数则标志结束一个几何要素的定义。函数 voidglBegin(Glenummode);mode的值见下表。绘制函数要在glBegin与glEnd之间调用。21Mode的值解释GL_POINTS一系列独立的点GL_LINES每两点相连成为线段GL_POLYGON简单,凸多边形的边界GL_TRIANGLES三点相连成为一个三角形GL_QUADS四点相连成为一个四边形GL_LINE_STRIP顶点相连成为一系列线段GL_LINE_LOOP顶点相连成为一系列线段,连接最后一点与第一点GL_TRIANGLE_STRIP相连的三角形带GL_TRIANGLE_FAN相连的三角形扇形GL_QUAD_STRIP相连的四边形带Mode的值解释GL_POINTS一系22允许在glBegin()与glEnd()之间调用的OpenGL命令
glVertex*();glColor*();glIndex();glNormal();glEvalCoord*();glCallList(),glCallLists();等允许在glBegin()与glEnd()之间调用的OpenG232、图元的属性(1/5)颜色点大小(缺省值为1)voidglColor*();voidglIndex();voidglPointSize(GLfloatsize);2、图元的属性(1/5)颜色voidglColor*();24线段线宽
线型:连续线(缺省值)、点画线等voidglLineWidth(GLfloatwidth);
voidglEnable(GL_LINE_STIPPLE);voidglLineStipple(GLintfactor,GLushortpattern);例: pattern factor 结果 0x00FF 1 0x00FF2 线段voidglLineWidth(GLfloatwid25图元的属性(2/5)多边形绘制方式:顶点、边界、填充
voidglPolygonMode(GLenumface,GLenummode); face: GL_FRONT_AND_BACK(缺省值) GL_FRONT GL_BACK mode: GL_POINT GL_LINE GL_FILL(缺省值)
图元的属性(2/5)voidglPolygonMode(G26图元的属性(3/5)前向面与后向面
背面剔除voidglFrontFace(GLenummode);mode: GL_CCW(缺省值) GL_CWvoidglCullFace(GLenummode); mode: GL_FRONT GL_BACK(缺省值) GL_FRONT_AND_BACK
图元的属性(3/5)前向面与后向面voidglFrontF27图元的属性(4/5)多边形填充方式均匀填色方式位图不透明方式位图透明方式象素图方式
voidglEnable(GL_POLYGON_STIPPLE);voidglPolygonStipple(constGlubyte*mask); mask: 位图
图元的属性(4/5)多边形填充方式voidglEnable28图元的属性(5/5)标记多边形边界多边形法向voidglEdgeFlag(GLbooleanflag);voidglNormal3*(TYPEnx,TYPEny,TYPEnz);voidglNormal3*v(constTYPE*v);图元的属性(5/5)标记多边形边界voidglEdgeFl293、OpenGL的变换OpenGL对图象的变换与照相机拍摄物体过程相似,分为四步:支起三角架,把照相机放在场景中—OpenGL的取景变换把要拍摄场景固定在拍摄物体上—OpenGL的模型变换选择照相机镜头或调节焦距—OpenGL的投影变换确定照片的大小,可以放大照片的某一部分——OpenGL的视见区变换
三维空间中的物体就可以表示为二维的平面物体3、OpenGL的变换OpenGL对图象的变换与照相机拍摄物30——几何变换平移变换放缩变换旋转变换viodglTranslate{fd}(TYPEdeltax,TYPEdeltay,TYPEdeltaz);voidglScale{fd}(TYPEsx,TYPEsy,TYPEsz);voidglRotate{fd}(TYPEangle,TYPEx,TYPEy,TYPEz);——几何变换平移变换viodglTranslate{fd}31——投影变换确定一个视景体(ViewingVolume),作用有两个:确定物体投影到屏幕的方式,即是透视投影还是正交投影。确定从图象上裁剪掉哪些物体或物体的某些部分。投影变换包括透视投影和正交投影——投影变换确定一个视景体(ViewingVolume),32—透视投影
—透视投影33—正射投影
—正射投影344、OpenGL图形的描绘对整个三维模型进行绘制,得到三维景象,包括:颜色模式的指定OpenGL提供了两种颜色模式:RGB模式和颜色索引模式;光照处理光照模型明暗处理材质材质颜色材质定义4、OpenGL图形的描绘对整个三维模型进行绘制,得到三维景35纹理贴图定义纹理控制滤波说明映射方式绘制场景,给出顶点的纹理坐标和几何坐标特殊效果的实现融合:将两种颜色分量依据一定比例混合在一起反走样:锯齿雾化效果纹理贴图36OpenGL是一个丰富的三维图形函数库;OpenGL编写的程序结构类似于用其他语言编写的程序;比如在C语言中调用OpenGL的函数;五、OpenGL程序的基本结构OpenGL是一个丰富的三维图形函数库;五、OpenGL程序37初始化: 设置OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等
这些状态一般都用函数glEnable(???),glDisable(???)来设置,???表示特定的状态。初始化:38设置观察坐标系下的取景模式和取景框大小,主要用到三个函数: voidglViewport(left,top,right,bottom);
设置屏幕上窗口大小,参数描述屏幕窗口四个角的坐标;voidglOrtho(left,right,bottom,top,near,far);
设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;voidgluPerspective(fovy,aspect,zNear,zFar); 设置投影方式为透视投影,其取景体积是一个截头锥体,在这个体积内的物体投影到锥的顶点。
设置观察坐标系下的取景模式和取景框大小,主要用到三个函数:39使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系,几何变换,光照处理等等。使用OpenGL的库函数构造几何物体对象的数学描述,包括点线40一个简单的绘图程序例程#include<windows.h>#include<gl.h>#include<glu.h>#include<glaux.h>voidmain(void){ OpenAWindow(); //创建一个窗口 InitOpenGL(); //初始化OpenGL glColor3f(1.0,1.0,1.0); //设置当前颜色 glBegin(GL_POLYGON); //开始绘图 glVertex2f(-0.5,-0.5); glVertex2f(-0.5,0.5); glVertex2f(0.5,0.5); glVertex2f(0.5,-0.5); glEnd(); glFlush(); //强制输出 KeepTheWindowOnScreenForAWhile(); //使窗口在屏幕上保留一会}一个简单的绘图程序例程#include<windows.h41函数命名规范voidglVertex3fv(Glfloat*vertex);
前缀 后缀前缀gl,glu,aux----该函数属于哪个函数库后缀2,3,4----参数的维数b,s,l,f,d,ub,us,ui----参数的数据类型v----以数组方式传递参数函数名中的单词首写字母大写函数命名规范42创建第一个应用程序(1/8)初始化显示方式
例:将显示方式置为单缓存、直接颜色方式
voidauxInitDisplayMode(GL_SINGLE|AUX_RGBA);voidauxInitDisplayMode(Glbitfieldmask);mask:GL_DOUBLE(GL_SINGLE)| AUX_RGBA(AUX_INDEX)| AUX_DEPTH|AUX_STENCIL|AUX_ACCUM创建第一个应用程序(1/8)初始化显示方式voidauxI43创建第一个应用程序(2/8)创建窗口初始化窗口的位置与大小
创建并显示窗口
voidauxInitPosition(Glintx,GLinty, GLsizeiwidth,GLsizeiheight); (x,y):窗口的原点 width,height:窗口的宽和高
voidauxInitWindow(GLbyte*title); title:窗口标题
创建第一个应用程序(2/8)创建窗口voidauxInit44创建第一个应用程序(3/8)初始化帧缓存(颜色缓存)指定初始颜色清帧缓存
voidglClearColor(GLclampfr,GLclampfg, GLclampfb,GLclampfa);
缺省值:(0.0,0.0,0.0,0.0)
voidglClear(GL_COLOR_BUFFER_BIT);
创建第一个应用程序(3/8)初始化帧缓存(颜色缓存)voi45创建第一个应用程序(4/8)初始化深度缓存指定初始深度值
清深度缓存voidglClearDepth(GLclampddepth);缺省值:0.0voidglClear(GL_DEPTH_BUFFER_BIT);创建第一个应用程序(4/8)初始化深度缓存voidglCl46创建第一个应用程序(5/8)设置投影方式置投影方式为平行投影置投影方式为透视投影
voidglOrtho(GLdoubleleft,GLdoubleright,GLdoublebottom,GLdoubletop,Gldoublenear,GLdoublefar);voidglFrustum(GLdoubleleft,GLdoubleright,GLdoublebottom,GLdoubletop,Gldoublenear,GLdoublefar);创建第一个应用程序(5/8)设置投影方式voidglOrt47创建第一个应用程序(6/8)指定图元的颜色绘图强制输出voidglColor*();voidglFlush(void);创建第一个应用程序(6/8)指定图元的颜色voidglCo48创建第一个应用程序(7/8)例程#include<windows.h>#include<gl\gl.h>#include<gl\glaux.h>#include<gl\glu.h>
voidKeepTheWindowOnScreenForAWhile(){ _sleep(2000);}
voidmain(void){ auxInitDisplayMode(AUX_SINGLE|AUX_RGBA); auxInitPosition(0,0,500,400); auxInitWindow("CreateYourOwnProgram");
glClearColor(0.0,0.0,0.0,0.0); glClearDepth(0.0); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
创建第一个应用程序(7/8)例程49创建第一个应用程序(8/8)
glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0);
glColor3f(1.0,1.0,1.0);
glBegin(GL_POLYGON);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(-0.5,0.5,0.0);
glVertex3f(0.5,0.5,0.0);
glVertex3f(0.5,-0.5,0.0);
glEnd();
glFlush();
KeepTheWindowOnScreenForAWhile();
}
创建第一个应用程序(8/8) glOrtho(-1.0,50第四章虚拟现实建模工具第四章虚拟现实建模工具51虚拟现实系统图形程序设计接口OpenGL虚拟现实建模语言VRML虚拟现实建模工具3Dsmax
虚拟现实系统图形程序设计接口52虚拟环境构建主要是应用三维图形技术,包括图形的构建图形的显示4.1虚拟现实系统图形程序设计接口虚拟环境构建主要是应用三维图形技术,包括4.1虚拟现实系统图53在虚拟现实系统中,模型是十分复杂的;显示:软件:3D图形应用程序硬件:3D图形加速卡接口:三维图形应用程序接口(3DAPI)沟通3D图形应用程序和3D图形加速卡在虚拟现实系统中,模型是十分复杂的;54三维图形编程接口(3DAPI)多达50多种选择大公司和在图形应用方面获得广泛认可的公司提供的三维API引擎;OpenGLQuick-Draw3DDirect3D三维图形编程接口(3DAPI)多达50多种55OpenGL:SGI优点:适用于跨平台的应用开发,可运行在Unix、WindowsXP、WindowsNT、及Mac平台上缺点:不能完成某些高级功能,如某些文件操作功能OpenGL:SGI56Quick-Draw3D(QD3D):Apple公司优点:跨平台的应用开发,具有某些高级功能;是面向对象的图形系统;Quick-Draw3D(QD3D):Apple公司57Direct3D:Microsoft1996年发布的三维API,是交互式媒体技术家族DirectX中的一员;具有某些高级功能;Direct3D:58为什么是OpenGL?(1)OpenGL:性能优越,计算环境广泛,个人计算机-工作站-超级计算机;(2)虚拟环境平台OpenInventor、WorldToolKit、MulitgenCreator\Vega是以OpenGL为基础开发的;为什么是OpenGL?(1)OpenGL:性能优越,计算环境59(3)许多在计算机界具有领导地位的计算机公司纷纷采用OpenGL作为三维图形应用程序设计界面,OpenGL程序具有广泛的移植性;(3)许多在计算机界具有领导地位的计算机公司纷纷采用Open604.1OpenGL简介什么是OpenGLOpenGL的组成OpenGL的工作流程OpenGL的基本操作OpenGL程序的基本结构4.1OpenGL简介什么是OpenGL61一、什么是OpenGL?功能强大的图形库:可开发多种特殊视觉(如光照,纹理,透明,阴影)的三维图形;软硬件平台无关的跨平台三维图形引擎,运行于多种窗口系统之上;包含图元生成、投影、光照、光栅化等图形显示过程所需的功能一、什么是OpenGL?功能强大的图形库:可开发多种特殊视觉62OpenGL的发展历史:前身是由SGI公司为其图形工作站开发的IRISGL,是一个工业标准的三维图形软件接口。向其他平台移植时,开发了OpenGL有GL的功能,而且是开放的,适用于多种硬件平台及操作系统,用户可以创建出接近光线跟踪的高质量静止或动画的三维彩色图象,而且是要比光线跟踪算法快一个数量级。OpenGL的发展历史:63二、OpenGL的组成OpenGL库包括115个基本函数函数以gl开头例:glColor3f(),glTranslate3f().完成图元的定义、几何变换、投影等功能二、OpenGL的组成64OpenGL实用库实用函数43个函数以glu开头例:gluPerspective();完成更高层的图形处理如曲线曲面的生成、图象操作等OpenGL实用库65OpenGL辅助库包括函数31个函数以aux开头例:auxInitWindow();主要用于窗口管理OpenGL辅助库66主要特点OpenGL可以在网络上工作,即客户机/服务器型客户机:显示图形服务器:运行图形程序客户机与服务器可以不同类型,但两者服从相同的协议。OpenGL的硬件无关性——好的移植性主要特点OpenGL可以在网络上工作,即客户机/服务器型67三、OpenGL基本工作流程(1)根据基本图形单元(点,线,多边形)建立景物模型,并对景物模型进行数学描述。(2)在三维空间中放置景物模型,并设置视点。(3)计算模型中物体的颜色(直接定义或由光照及纹理间接给出)(4)光栅化,把模型数学描述和颜色信息转换至屏幕上在上述过程中,可执行消隐处理等操作三、OpenGL基本工作流程(1)根据基本图形单元(点,线,68四、OpenGL的基本操作图元绘制图元属性OpenGL变换(几何变换、投影变换、裁剪变换、视口变换)OpenGL图形的描绘四、OpenGL的基本操作图元绘制691、图元绘制图元的表示点:三维坐标(x,y,z)齐次坐标(x,y,z,1)线段:两个端点多边形:顶点序列矩形:左下角点、右上角点绘制图元定义一个顶点voidglVertex{234}{sifd}[v](TYPEcoords);例:glVertex3f(1.0,1.0,1.0);1、图元绘制图元的表示例:glVertex3f(1.0,1.70绘制函数要在glBegin与glEnd之间调用。glBegin标志几何要素定义的开始,glEnd函数则标志结束一个几何要素的定义。函数 voidglBegin(Glenummode);mode的值见下表。绘制函数要在glBegin与glEnd之间调用。71Mode的值解释GL_POINTS一系列独立的点GL_LINES每两点相连成为线段GL_POLYGON简单,凸多边形的边界GL_TRIANGLES三点相连成为一个三角形GL_QUADS四点相连成为一个四边形GL_LINE_STRIP顶点相连成为一系列线段GL_LINE_LOOP顶点相连成为一系列线段,连接最后一点与第一点GL_TRIANGLE_STRIP相连的三角形带GL_TRIANGLE_FAN相连的三角形扇形GL_QUAD_STRIP相连的四边形带Mode的值解释GL_POINTS一系72允许在glBegin()与glEnd()之间调用的OpenGL命令
glVertex*();glColor*();glIndex();glNormal();glEvalCoord*();glCallList(),glCallLists();等允许在glBegin()与glEnd()之间调用的OpenG732、图元的属性(1/5)颜色点大小(缺省值为1)voidglColor*();voidglIndex();voidglPointSize(GLfloatsize);2、图元的属性(1/5)颜色voidglColor*();74线段线宽
线型:连续线(缺省值)、点画线等voidglLineWidth(GLfloatwidth);
voidglEnable(GL_LINE_STIPPLE);voidglLineStipple(GLintfactor,GLushortpattern);例: pattern factor 结果 0x00FF 1 0x00FF2 线段voidglLineWidth(GLfloatwid75图元的属性(2/5)多边形绘制方式:顶点、边界、填充
voidglPolygonMode(GLenumface,GLenummode); face: GL_FRONT_AND_BACK(缺省值) GL_FRONT GL_BACK mode: GL_POINT GL_LINE GL_FILL(缺省值)
图元的属性(2/5)voidglPolygonMode(G76图元的属性(3/5)前向面与后向面
背面剔除voidglFrontFace(GLenummode);mode: GL_CCW(缺省值) GL_CWvoidglCullFace(GLenummode); mode: GL_FRONT GL_BACK(缺省值) GL_FRONT_AND_BACK
图元的属性(3/5)前向面与后向面voidglFrontF77图元的属性(4/5)多边形填充方式均匀填色方式位图不透明方式位图透明方式象素图方式
voidglEnable(GL_POLYGON_STIPPLE);voidglPolygonStipple(constGlubyte*mask); mask: 位图
图元的属性(4/5)多边形填充方式voidglEnable78图元的属性(5/5)标记多边形边界多边形法向voidglEdgeFlag(GLbooleanflag);voidglNormal3*(TYPEnx,TYPEny,TYPEnz);voidglNormal3*v(constTYPE*v);图元的属性(5/5)标记多边形边界voidglEdgeFl793、OpenGL的变换OpenGL对图象的变换与照相机拍摄物体过程相似,分为四步:支起三角架,把照相机放在场景中—OpenGL的取景变换把要拍摄场景固定在拍摄物体上—OpenGL的模型变换选择照相机镜头或调节焦距—OpenGL的投影变换确定照片的大小,可以放大照片的某一部分——OpenGL的视见区变换
三维空间中的物体就可以表示为二维的平面物体3、OpenGL的变换OpenGL对图象的变换与照相机拍摄物80——几何变换平移变换放缩变换旋转变换viodglTranslate{fd}(TYPEdeltax,TYPEdeltay,TYPEdeltaz);voidglScale{fd}(TYPEsx,TYPEsy,TYPEsz);voidglRotate{fd}(TYPEangle,TYPEx,TYPEy,TYPEz);——几何变换平移变换viodglTranslate{fd}81——投影变换确定一个视景体(ViewingVolume),作用有两个:确定物体投影到屏幕的方式,即是透视投影还是正交投影。确定从图象上裁剪掉哪些物体或物体的某些部分。投影变换包括透视投影和正交投影——投影变换确定一个视景体(ViewingVolume),82—透视投影
—透视投影83—正射投影
—正射投影844、OpenGL图形的描绘对整个三维模型进行绘制,得到三维景象,包括:颜色模式的指定OpenGL提供了两种颜色模式:RGB模式和颜色索引模式;光照处理光照模型明暗处理材质材质颜色材质定义4、OpenGL图形的描绘对整个三维模型进行绘制,得到三维景85纹理贴图定义纹理控制滤波说明映射方式绘制场景,给出顶点的纹理坐标和几何坐标特殊效果的实现融合:将两种颜色分量依据一定比例混合在一起反走样:锯齿雾化效果纹理贴图86OpenGL是一个丰富的三维图形函数库;OpenGL编写的程序结构类似于用其他语言编写的程序;比如在C语言中调用OpenGL的函数;五、OpenGL程序的基本结构OpenGL是一个丰富的三维图形函数库;五、OpenGL程序87初始化: 设置OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等
这些状态一般都用函数glEnable(???),glDisable(???)来设置,???表示特定的状态。初始化:88设置观察坐标系下的取景模式和取景框大小,主要用到三个函数: voidglViewport(left,top,right,bottom);
设置屏幕上窗口大小,参数描述屏幕窗口四个角的坐标;voidglOrtho(left,right,bottom,top,near,far);
设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;voidgluPerspective(fovy,aspect,zNear,zFar); 设置投影方式为透视投影,其取景体积是一个截头锥体,在这个体积内的物体投影到锥的顶点。
设置观察坐标系下的取景模式和取景框大小,主要用到三个函数:89使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系,几何变换,光照处理等等。使用OpenGL的库函数构造几何物体对象的数学描述,包括点线90一个简单的绘图程序例程#include<windows.h>#include<gl.h>#include<glu.h>#include<glaux.h>voidmain(void){ OpenAWindow(); //创建一个窗口 InitOpenGL(); //初始化OpenGL glColor3f(1.0,1.0,1.0); //设置当前颜色 glBegin(GL_POLYGON); //开始绘图 glVertex2f(-0.5,-0.5); glVertex2f(-0.5,0.5); glVertex2f(0.5,0.5); glVertex2f(0.5,-0.5); glEnd(); glFlush(); //强制输出 KeepTheWindowOnScreenForAWhile(); //使窗口在屏幕上保留一会}一个简单的绘图程序例程#include<windows.h91函数命名规范voidglVertex3fv(Glfloat*vertex);
前缀 后缀前缀gl,glu,aux----该函数属于哪个函数库后缀2,3,4----参数的维数b,s,l,f,d,ub,us,ui----参数的数据类型v----以数组方式传递参数函数名中的单词首写字母大写函数命名规范92创建第一个应用程序(1/8)初始化显示方式
例:将显示方式置为单缓存、直接颜色方式
voidauxInitDisplayMode(GL_SINGLE|AUX_RGBA);voidauxInitDisplayMode(Glbitfieldmask);mask:GL_DOUBLE(GL_SINGLE)| AUX_RGBA(AUX_INDEX)| AUX_DEPTH|AUX_STENCIL|AUX_ACCUM创建第一个应用程序(1/8)初始化显示方式voidauxI93创建第一个应用程序(2/8)创建窗口初始化窗口的位置与大小
创建并显示窗口
voidauxInitPosition(Glintx,GLinty, GLsizeiwidth,GLsizeiheight
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度企业与保险公司保险合同
- 绩效办法宣贯课件
- 2024年度企业间设备租赁与购买期权合同
- 2024年度知识产权转让合同:某专利权人与受让方关于专利转让的合同
- 九绕高速公路A1安全管理制度汇编
- 《LC的简单使用》课件
- 《龙虾主题餐厅》课件
- 重温中秋班会课件
- 2024年度船舶坞修合同维修项目列表
- 学校租赁车辆的合同模板
- 初中英语-Unit5 What are the shirts made of教学设计学情分析教材分析课后反思
- UbuntuLinu操作系统上机实践实验题题库期末考试试卷24
- 邻菲罗啉安全技术说明书MSDS
- 2022-2023学年浙江省湖州市高二年级上册学期期末数学试题【含答案】
- 锂电池运输规范说明
- DBJ51∕T 081-2017 四川省城镇二次供水运行管理标准
- 《美丽中国是我家》 课件
- 110KV电缆敷设专项施工方案方案
- 《新时代劳动教育100问》读书笔记思维导图
- 仪表“三查四定”检查清单
- GB/T 7284-2016框架木箱
评论
0/150
提交评论