计算机图形学(本)

上传人:艳*** 文档编号:177630676 上传时间:2022-12-26 格式:PPT 页数:136 大小:4.74MB
返回 下载 相关 举报
计算机图形学(本)_第1页
第1页 / 共136页
计算机图形学(本)_第2页
第2页 / 共136页
计算机图形学(本)_第3页
第3页 / 共136页
点击查看更多>>
资源描述
1 主讲人:陈学工 (tel:07318836763 email:)2 教材 计算机图形学,倪明田等,北京大学出版社,2000年。参考书 1、OpenGL编程指南(第四版),Dave Shreiner等(邓郑祥译),人民邮电出版社,2005年。2、计算机图形学(第三版),Donald Hearn,电子工业出版社,2004年。3、计算机图形学基础,唐泽圣等,清华大学出版社,2001年。3 1、图形软件包 2、用VC+编写OpenGL程序 3、图形变换 4、颜色和光照 5、混合、反走样和雾 6、显示列表、位图和图像 7、纹理映射 8、复杂图形绘制 9、杂例4 1、Direct 3D和DirectX DirectX是微软公司的多媒体应用软件包,Direct 3D是其中的一部分。DirectX支持图形、音响、应用程序安装和设备管理等。Direct 3D至少支持游戏或其他应用中的12种3D图形效果处理。5 2、Heidi Heidi主要应用于CAD和CAM技术中,如AutoCAD、3D Studio以及3DS MAX。Heidi是专业性强的软件包,在CAD和CAM领域应用比较广泛,在其它领域如多媒体或游戏软件中应用较少。6 3、OpenGL OpenGL是以SGI公司为首,联合IBM、Intel等8家公司共同制定的3D图形标准。OpenGL与硬件无关、独立于操作系统、支持网络运行。7 1、OpenGL函数库 基本库 基本库是OpenGL的核心函数库。所有OpenGL操作都可用这些函数来实现。可以在平台之间移植。这些函数以“gl”为前缀。实用库 实用库建立在基本库的基础之上,目的是为了减轻使用者的编程负担。这些函数以“glu”为前缀。辅助库 提供窗口管理函数、事件处理函数和简单模型制作函数。这些函数以“aux”为前缀。Windows专用函数8 2、帧缓存 在OpenGL中,帧缓存由颜色缓存、深度缓存、模板缓存和累积缓存组成。颜色缓存:用于存储每个像素点的颜色,包括左前、(左后、右前、右后)和辅助颜色缓存。深度缓存:用于存储每个像素点的深度值。模板缓存:用于将作图限制在屏幕中的某些部分。累积缓存:在RGBA模式中,用于将一系列图像累加成一幅图像。3、建立OpenGL控制台应用程序(.NET)9 1、投影 void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble zNear,GLdouble zFar);函数功能:用一个正射投影矩阵右乘当前投影矩阵。输入参数:裁剪面left,right,bottom,top,zNear,zFar。输出参数:无 返回值:无 void glOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top);10 正射投影nearfarview directiontopbottomleftright11 正射投影矩阵12 void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);函数功能:设置一个透视投影矩阵。输入参数:视域的角度fovy,视域宽与高的比率,视点到近和远裁剪面的距离zNear和zFar。输出参数:无 返回值:无13 void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble zNear,GLdouble zFar);函数功能:用一个透视投影矩阵右乘当前投影矩阵。输入参数:裁剪面left,right,bottom,top,到近和远裁剪面的距离zNear和zFar。输出参数:无 返回值:无14 透视投影(glFrustum)nearfarleftrightbottomtopview point15 透视投影(glFrustum)矩阵16 2、视区变换 void glViewport(GLint x,GLint y,GLint width,GLint height);函数功能:在窗口中定义一个视区。输入参数:视区左下角坐标(x,y),视区的宽width,视区的高height。输出参数:无 返回值:无17 3、裁剪变换 void glClipPlane(GLenum plane,const GLdouble*equation);函数功能:定义附加裁剪平面。输入参数:参数plane表示裁剪平面索引号GL_CLIP_PLANEi(i取0到到GL_MAX_CLIP_PLANES-1 之间的整数),参数equation表示三维平面方程Ax+By+Cz+D=0的系数A,B,C和D构成的数组。输出参数:无 返回值:无18 4、几何变换 void glRotatef,d(TYPE angle,TYPE x,TYPE y,TYPE z);函数功能:对局部坐标系进行旋转。输入参数:旋转角度angle,旋转轴方向矢量(x,y,z)。输出参数:无 返回值:无19 void glTranslatef,d(TYPE x,TYPE y,TYPE z);函数功能:对局部坐标系进行平移。输入参数:在坐标轴方向的平移量x,y和z。输出参数:无 返回值:无 void glScalef,d(TYPE x,TYPE y,TYPE z);函数功能:对局部坐标系进行缩放。输入参数:在坐标轴方向的缩放量x,y和z。输出参数:无 返回值:无20 1、绘图颜色 void glClearColor(GLclamped red,GLclamped green,GLclamped blue,GLclamped alpha);函数功能:设定清颜色缓冲区颜色值。void glClear(GLbitfield mask);函数功能:清除指定的缓冲区。21 void glColor3b,f,d,s,i,ub,ui,us(TYPE red,TYPE green,TYPE blue);void glColor4b,f,d,s,i,ub,ui,us(TYPE red,TYPE green,TYPE blue,TYPE alpha);void glColor3b,f,d,s,i,ub,ui,usv(TYPE*v);void glColor4b,f,d,s,i,ub,ui,usv(TYPE*v);函数功能:指定当前颜色。void glIndexs,i,f,d(TYPE c);void glIndexs,i,f,d(TYPE*c);函数功能:设置当前颜色索引值。22 2、阴影模式 void glShadeMode(GLenum mode);函数功能:设置阴影模式。输入参数:阴影模式类型mode。mode取值为GL_FLAT或GL_SMOOTH。当阴影模式为GL_FLAT时,多边形用一个顶点的颜色进行绘制;当阴影模式为GL_SMOOTH时,多边形用各个顶点颜色的插值结果进行绘制。输出参数:无 返回值:无23 3、材质 void glMateriali,f(GLenum face,Glenum pName,TYPE param);void glMateriali,fv(GLenum face,Glenum pName,TYPE*param);函数功能:定义当前多边形的材质。输入参数:参数face表示材质应用于多边形的哪个面(GL_FRONT、GL_BACK或GL_FRONT_AND_BACK),参数pName表示光线类型(GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR、GL_SHINESS或GL_EMISSION)。参数param表示反射率或镜面反射指数。GL_SHINESS表示镜面反射指数,此时param允许取值范围为0到128。输出参数:无 返回值:无2425 void glColorMaterial(GLenum face,GLenum mode);函数功能:定义当前多边形的材质。输入参数:参数face表示材质应用于多边形的哪个面(GL_FRONT、GL_BACK或GL_FRONT_AND_BACK),参数pName表示光线类型(GL_AMBIENT、GL_DIFFUSE、GL_AMBIENT_AND_DIFFUSE、GL_SPECULAR、GL_SHINESS或GL_EMISSION)。参数face缺省为GL_FRONT_AND_BACK,参数pName缺省为GL_AMBIENT_AND_DIFFUSE。输出参数:无 返回值:无 void glColor*();26 4、光照 void glLight i,f(GLenum light,Glenum pName,TYPE param);void glLighti,fv(GLenum light,Glenum pName,TYPE*param);函数功能:创建光源。输入参数:参数light表示光源编号GL_LIGHTi(i取0到GL_MAX_LIGHTS-1之间的值),参数pName表示操作类型(GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR、GL_POSITION、GL_SPOT_DIRECTION、GL_SPOT_EXPONEXT、GL_SPOT_CUTOFF或GL_CONST_ATTENUATION)。参数param表示光的强度、光源位置、衰减因子或其他。输出参数:无 返回值:无2728 5、光照模型 void glLightModeli,f(GLenum pName,TYPE param);void glLightModeli,fv(GLenum pName,TYPE*param);函数功能:建立光照模型。输入参数:参数pName表示光照模型的类型(GL_LIGHG_MODEL_AMBIENT、GL_LIGHT_MODEL_LOCAL_VIEWER或GL_MODEL_TWO_SIDE)。参数param表示要设置的参数值。参数pName取GL_LIGHG_MODEL_AMBIENT时,param表示全局环境光,参数pName取GL_LIGHG_MODEL_LOCAL_VIEWER时,param表示镜面反射光视角的计算方法。输出参数:无 返回值:无293031 6、多边形绘制 void glFront(GLenum mode);函数功能:指定多边形的正面。输入参数:指定多边形正面的参数mode。mode取GL_CCW或GL_CW。mode取GL_CCW时,多边形的顶点呈逆时针方向排列一面为正面。输出参数:无 返回值:无32 void glPolygonMode(GLenum face,GLenum mode);函数功能:设定多边形的绘制模式。输入参数:指定绘制多边形哪些面的参数face,指定多边形绘制方式的参数mode。face的取值为GL_FRONT_AND_BACK、GL_FRONT或GL_BACK,缺省为GL_FRONT_AND_BACK,mode取GL_POINT、GL_LINE或GL_FILL,缺省为GL_FILL。输出参数:无 返回值:无33 void glNormal3b,s,i,f,d(TYPE nx,TYPE ny,TYPE nz);void glNormal3 b,s,i,f,d v(const TYPE*v);函数功能:设置当前法向量。输入参数:法向量分量或法向量矢量。法向量的方向影响镜面反射光和散射光的强度。输出参数:无 返回值:无 链接DrawScence()3435 1、混合 void glBlendFunc(GLenum sfactor,GLenum dfactor);函数功能:设置混合因子。输入参数:参数sfactor和dfactor分别表示混合源因子和混合目标因子。输出参数:无 返回值:无 结果颜色值 RsSr+RdDr,GsSg+GdDg,BsSb+BdDb,AsSa+AdDa其中Rs,Rd等表示源和目标颜色,Sr,Dr等表示混合因子。各分量的值被截取到0,1.3637383940 2、反走样 void glHint(GLenum target,GLenum mode);函数功能:设置混合因子。输入参数:参数target表示反走样的行为(GL_POINT_SMOOTH_HINT、GL_LINE_SMOOTH_HINT、GL_FOG_HINT、GL_POLYGON_SMOOTH_HINT),参数mode表示计算时的首选考虑(GL_FASTEST、GL_NICEST或GL_DONT_CARE)。输出参数:无 返回值:无41 3、雾化 void glFogi,f(GLenum pName,TYPE param);void glFogi,fv(GLenum pName,TYPE*param);函数功能:设置混合因子。输入参数:参数pName表示将要设置的参数类型(GL_FOG_MODE、GL_FOG_ DENSITY、GL_FOG_START、GL_FOG_END、GL_FOG_ COLOR、GL_FOG_INDEX),参数param表示参数值。当pName为GL_FOG_MODE时,param取值为GL_LINEAR、GL_EXP或GL_EXP2。输出参数:无 返回值:无424344 1、显示列表 显示列表为优化绘图性能而设计,尤其是为优化网络应用而设计。OpenGL的显示列表在程序运行过程中是不可修改的。显示列表的典型 应用 位图和图像:将位图或图像的定义添加到显示列表中,在显示列表编译(而不是在图形显示)时将数据转换成硬件支持的格式。光照、材质及光照模型:可将材质定义添加到显示列表中,避免在材质选择时反复计算。纹理:将纹理定义添加到显示列表中,在显示列表编译(而不是在图形显示)时将纹理格式转换成硬件支持的格式。矩阵操作:将计算某些矩阵及其逆矩阵的OpenGL命令添加到显示列表。45 void glNewList(GLuint list,GLenum mode);函数功能:新建一个显示列表。输入参数:参数list表示显示列表的名称,参数mode表示显示列表的状态(GL_COMPILE、GL_COMPILE_AND_EXECUTE)。输出参数:无 返回值:无 void glEndList();函数功能:显示列表定义结束。void glCallList(GLuint list);函数功能:调用显示列表。46 GLuint glGenLists(GLsizei range);函数功能:新建一组空显示列表。输入参数:参数range表示将要创建的显示列表的数目。输出参数:无 返回值:成功时返回最前面一个显示列表的索引值,否则返回0。GLboolean glIsList(GLuint list);函数功能:测试显示列表是否存在。输入参数:参数list表示被测试显示列表的名称。输出参数:无 返回值:被测试的显示列表存在时返回GL_TRUE,否则返回GL_FALSE。474849 2、位图 OpenGL提供了位图操作函数。利用这些函数可以实现字符(串)输出。void glRasterPos2 d,f,i,s(TYPE x,TYPE y);void glRasterPos3 d,f,i,s(TYPE x,TYPE y,TYPE z);void glRasterPos4 d,f,i,s(TYPE x,TYPE y,TYPE z,TYPE w);void glRasterPos2,3,4d,f,i,sv(TYPE*v);函数功能:指定像素操作的光栅位置。50 void glBitmap(GLsizei width,GLsizei height,GLfloat x,GLfloat y,GLfloat dx,GLfloat dy,const GLubyte*bitmap);函数功能:绘制位图。输入参数:参数width,height表示位图按像素表示的宽和高,参数x,y表示位图的左下角(相对于当前光栅位置的)坐标,参数dx,dy表示当前位图画完之后,当前光栅位置在水平和垂直方向的偏移量,参数bitmap表示位图的地址。输出参数:无 返回值:无。51 glPixelStorei,f(GLenum pName,TYPE param);函数功能:设置像素存储模式。输入参数:参数pName表示存储模式名,参数param为特定存储模式设定的值。输出参数:无 返回值:无。525354555657 3、图像 在位图中,每个像素点用一位来存储它的信息;在图像中,一个像素点可以用多位来存储它的信息。图像可以用作纹理图。58 void glReadPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid*pixels);函数功能:从帧缓存中读取像素块。输入参数:参数x,y表示像素块左下角的坐标,参数width,height表示像块的宽和高,参数format表示像素数据的格式(GL_RGB、GL_RGBA、GL_RED、GL_GREEN、GL_BLUE、GL_ALPHA、GL_LUMINANCE_ALPHA、GL_LUMINANCE、GL_DEPTH_COMPONENT、GL_STENCIL_INDEX、GL_COLOR_INDEX),参数type表示像素数据的数据类型(GL_UNSIGNED_BYTE、GL_BYTE、BL_BITMAP、GL_UNSIGNED_SHORT、GL_SHORT、GL_UNSIGNED_INT、GL_INT、GL_FLOAT),参数pixels指向像素数据。输出参数:无 返回值:无。59 void glDrawPixels(GLsizei width,GLsizei height,GLenum format,GLenum type,GLvoid*pixels);函数功能:在当前光栅位置绘制像素块。输入参数:参数width,height表示像块的宽和高,参数format表示像素数据的格式(GL_RGB、GL_RGBA、GL_RED、GL_GREEN、GL_BLUE、GL_ALPHA、GL_LUMINANCE_ALPHA、GL_LUMINANCE、GL_DEPTH_COMPONENT、GL_STENCIL_INDEX、GL_COLOR_INDEX),参数type表示像素数据的数据类型(GL_UNSIGNED_BYTE、GL_BYTE、BL_BITMAP、GL_UNSIGNED_SHORT、GL_SHORT、GL_UNSIGNED_INT、GL_INT、GL_FLOAT),参数pixels指向像素数据。输出参数:无 返回值:无。60 void glCopyPixels(GLint x,GLint y,GLsizei width,GLsizei height,GLenum type);函数功能:从帧缓存拷贝像素块到当前光栅位置。输入参数:参数x,y表示像素块左下角的窗口坐标,参数width,height表示像块的宽和高,参数type表示拷贝操作的类型(GL_COLOR、GL_STENCIL、GL_DEPTH)。输出参数:无 返回值:无。61 void glPixelZoom(GLfloat xfactor,GLfloat yfactor);函数功能:在x 和y方向进行缩放。void glPixelTransferi,f(GLenum pName,TYPE param);函数功能:设置像素转换模式。输入参数:参数pName表示像素转换模式名,参数param表示pName要设定的值。输出参数:无 返回值:无。62636465 void glPixelMapui,us,fv(GLenum map,GLint mapsize,const TYPE*values);函数功能:设置像素(转换)映射。输入参数:参数map表示像素映射表名称,参数mapsize表示映射表的大小,参数values表示mapsize个值对组成的数组。输出参数:无 返回值:无66676869707172737475767778798081 1、生成和绑定纹理名称 void glGenTextures(GLsizei n,GLuint*textures);函数功能:生成纹理名称。输入参数:参数n为纹理名称的数目,参数textures表示被生成的纹理名称构成的数组。输出参数:无 返回值:无。8283 2、纹理定义 物体表面细节分为两类:一类是表面的颜色纹理,如桌上的木纹;另一类是表面的几何纹理,如凹凸不平的树皮。简单规则的颜色纹理可用表面细节多边形来模拟;当纹理变得精致复杂时,可采用纹理映射(texture map)技术,即将一幅平面图映射到物体表面上,从而产生物体表面的细节。纹理是一块矩形区域,可以从图像中读取。可以将纹理映射到非矩形区域。84 纹理映射的基本步骤:纹理定义 控制颜色 启用纹理映射 指定纹理坐标和几何坐标85 void glTexImage2D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid*pixels);函数功能:定义一个二维纹理图像。输入参数:参数target为纹理类型,只能是GL_TEXTURE_2D,参数level表示多分率图像的级数,参数internalFormat表示纹理中颜色分量的数目,参数width和height表示图像的宽和高,参数border表示图像边界的大小,参数format表示像素数据的格式,参数type表示像素数据的类型,参数pixels是指向像素数据的指针。输出参数:无 返回值:无。86 void glTexImage1D(GLenum target,GLint level,GLint internalFormat,GLsizei width,GLsizei height,GLint border,GLenum format,GLenum type,const GLvoid*pixels);函数功能:定义一个二维纹理图像。输入参数:参数target为纹理类型,只能是GL_TEXTURE_1D,参数level表示多分率图像的级数,参数internalFormat表示纹理中颜色分量的数目,参数width和height表示图像的宽和高,参数border表示图像边界的大小,参数format表示像素数据的格式,参数type表示像素数据的类型,参数pixels是指向像素数据的指针。输出参数:无 返回值:无。8788 MIP纹理映射 程序员可以指定一系列分辩率递减的纹理图(mipmaps),OpenGL按照物体的尺寸自动确定应该使用哪个纹理图。使用MIP纹理映射技术时,纹理图的大小必须从n*n依次递减到1*1。89 3、设置纹理参数 void glTexParameteri,f(GLenum target,GLenum pName,TYPE param);void glTexParameteri,fv(GLenum target,GLenum pName,TYPE*param);函数功能:设置纹理参数。输入参数:参数target为纹理类型(GL_TEXTURE_1D,GL_TEXTURE_2D),参数pName表示纹理名称(GL_TEXTURE_BORDER_COLOR、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T、GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER),参数param表示pName的值。输出参数:无 返回值:无。909192 4、纹理映射 void glTexCoord1,2,3,4d,f,i,s(TYPE s,TYPE t,TYPE r,TYPE q);void glTexCoord1,2,3,4d,f,i,sv(const TYPE*v);函数功能:设置纹理坐标。输入参数:参数s,t,r,q为纹理坐标。输出参数:无 返回值:无。9394959697 void glTexEnvi,f(GLenum target,GLenum pName,TYPE param);void glTexEnvi,fv(GLenum target,GLenum pName,TYPE*param);函数功能:设置纹理环境参数。输入参数:参数target表示纹理环境(GL_TEXTURE_ENV),参数pName纹理环境参数名,参数param表示pName的值。输出参数:无 返回值:无。9899100101 void glTexGeni,f,d(GLenum coord,GLenum pName,TYPE param);void glTexGeni,f,dv(GLenum coord,GLenum pName,TYPE*param);函数功能:自动生成纹理坐标。输入参数:参数coord表示纹理坐标(GL_S、GL_T、GL_R、GL_Q),参数pName表示纹理坐标生成函数名或函数参数,参数param表示pName的值。输出参数:无 返回值:无。102103104105106107108 1、Bezier曲线109110111112113114115116117 2、三次样条曲线118119120 3、B样条曲线121122 4、Bezier曲面123124 2、Coons曲面125126127 3、B样条曲面128129130 1、模拟水波131132133 2、光照模型134135136
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!