资源预览内容
第1页 / 共110页
第2页 / 共110页
第3页 / 共110页
第4页 / 共110页
第5页 / 共110页
第6页 / 共110页
第7页 / 共110页
第8页 / 共110页
第9页 / 共110页
第10页 / 共110页
亲,该文档总共110页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机图形学主讲人:陈学工(tel:07318836763 email:csucxgcsu.edu.cn)1教材和参考书 教材 计算机图形学,倪明田等,北京大学出版社,2000 年。 参考书 1、OpenGL编程指南(第七版),Dave Shreiner等 (李军等译),机械工业出版社,2010年。 2、计算机图形学(第三版),Donald Hearn,电 子工业出版社,2004年。 3、计算机图形学基础,唐泽圣等,清华大学出版 社,2001年。2本课程的学习内容 1、图形软件包 2、用VC+编写OpenGL程序 3、图形变换 4、图元绘制 5、颜色和光照 6、混合、反走样和雾化 7、显示列表、位图和图像 8、纹理映射 9、复杂图形绘制3一、图形软件包 1、Direct 3D和DirectX DirectX是微软公司的多媒体应用软件包, Direct 3D是其中的一部分。DirectX支持图形 、音响、应用程序安装和设备管理等。 Direct 3D至少支持游戏或其他应用中的12种 3D图形效果处理。4一、图形软件包 2、Heidi Heidi主要应用于CAD和CAM技术中,如 AutoCAD、3D Studio以及3DS MAX。 Heidi是专业性强的软件包,在CAD和CAM 领域应用比较广泛,在其它领域如多媒体或 游戏软件中应用较少。5一、图形软件包 3、OpenGL OpenGL是以SGI公司为首,联合IBM、Intel 等8家公司共同制定的3D图形标准。 OpenGL与硬件无关、独立于操作系统、支 持网络运行。6二、用VC+编写OpenGL程序 1、OpenGL函数库 基本库 基本库是OpenGL的核心函数库。所有OpenGL操作都可用 这些函数来实现。可以在平台之间移植。这些函数以“gl” 为前缀。 实用库 实用库建立在基本库的基础之上,目的是为了减轻使用者 的编程负担。这些函数以“glu”为前缀。 辅助库 提供窗口管理函数、事件处理函数和简单模型制作函数。 这些函数以“aux”为前缀。 Windows专用函数7二、用VC+编写OpenGL程序 2、帧缓存 在OpenGL中,帧缓存由颜色缓存、深度缓 存、模板缓存和累积缓存组成。 颜色缓存:用于存储每个像素点的颜色,包括左 前、(左后、右前、右后)和辅助颜色缓存。 深度缓存:用于存储每个像素点的深度值。 模板缓存:用于将作图限制在屏幕中的某些部分 。 累积缓存:在RGBA模式中,用于将一系列图像 累加成一幅图像。 3、建立OpenGL控制台应用程序(.NET)8三、图形变换 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);9三、图形变换 正射投影nearfarview directiontopbottomleft right10三、图形变换 正射投影矩阵11三、图形变换 void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); 函数功能:设置一个透视投影矩阵。 输入参数:视域的角度fovy,视域宽与高的比率, 视点到近和远裁剪面的距离zNear和zFar。 输出参数:无 返回值:无12三、图形变换 void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); 函数功能:用一个透视投影矩阵右乘当前投影矩 阵。 输入参数:裁剪面left,right,bottom,top,到近和远 裁剪面的距离zNear和zFar。 输出参数:无 返回值:无13三、图形变换 透视投影(glFrustum)nearfarleftrightbottomtopview point14三、图形变换 透视投影(glFrustum)矩阵15三、图形变换 2、视区变换 void glViewport(GLint x, GLint y, GLint width, GLint height); 函数功能:在窗口中定义一个视区。 输入参数:视区左下角坐标(x,y),视区的宽width, 视区的高height。 输出参数:无 返回值:无16三、图形变换 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构成的数组。 输出参数:无 返回值:无17三、图形变换 4、几何变换 void glRotatef,d(TYPE angle, TYPE x, TYPE y, TYPE z); 函数功能:对局部坐标系进行旋转。 输入参数:旋转角度angle,旋转轴方向矢量(x,y,z) 。 输出参数:无 返回值:无18三、图形变换 void glTranslatef,d(TYPE x, TYPE y, TYPE z); 函数功能:对局部坐标系进行平移。 输入参数:在坐标轴方向的平移量x,y和z。 输出参数:无 返回值:无 void glScalef,d(TYPE x, TYPE y, TYPE z); 函数功能:对局部坐标系进行缩放。 输入参数:在坐标轴方向的缩放量x,y和z。 输出参数:无 返回值:无19四、图元绘制 1、图元定义 void glBegin(GLenun mode); 函数功能:定义图元,图元顶点序列开始。 输入:图元类型 输出:无 返回值:无 void glEnd(void); 函数功能:定义图元,图元顶点序列结束。 输入:无 输出:无 返回值:无20四、图元绘制 2、画点 void glPointSize(GLfloat size); 函数功能:定义顶点大小。 输入:顶点大小size,size必须大于0.0,缺省为1.0。 输出:无 返回值:无 void glVertex2,3,4sifdv(TYPE coords); 函数功能:定义顶点。 输入:顶点坐标。 输出:无 返回值:无21四、图元绘制 3、画线 void glLineWidth(GLfloat width); 函数功能:定义线宽。 输入:线宽width,该值必须大于0.0,缺省为1.0。 输出:无 返回值:无 void glLineStipple(GLint factor,GLushort pattern); 函数功能:定义线模式。 输入:factor表示重复次数(1到255), pattern表示线模式 。 输出:无 返回值:无22四、图元绘制 4、画多边形 void glPolygonMode(GLenum face,GLenum mode); 函数功能:定义多边形模式。 输入:face表示绘制多边形的哪些面(GL_FRONT, GL_BACK, GL_FRONT_AND_BACK),mode表示面模式 (GL_POINT, GL_LINE, GL_FILL)。 输出:无 返回值:无 void glPolygonFace(GLenum mode); 函数功能:定义多边形的正面。 输入:mode表示多边形的哪个面为正面(GL_CCW, GL_CW)。 输出:无 返回值:无23四、图元绘制 void glCullFace(GLenum mode); 函数功能:剔除多边形的某些面。 输入:mode表示被剔除的面(GL_FRONT, GL_BACK, GL_FRONT_AND_BACK 。 输出:无 返回值:无 void glPolygonStipple(const GLubyte *mask); 函数功能:定义填充模式。 输入:mask指向一个32x32位图。 输出:无 返回值:无24四、图元绘制 5、实例 图元绘制实例:见pointp.c,lines.c和polys.c glBegin(GLenun mode); mode可能的取值有: GL_POINTS; GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP; GL_TRIANGLES, GL_TRIANGLE_STRIP; GL_QUADS, GL_QUAD_STRIP; GL_POLYGON. 在二维投影下,glRectf可以绘制矩形25五、颜色和光照 1、绘图颜色 void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); 函数功能:设定清颜色缓冲区颜色值。 void glClear(GLbitfield mask); 函数功能:清除指定的缓冲区。26五、颜色和光照 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,dv(TYPE *c); 函数功能:设置当前颜色索引值。27五、颜色和光照 2、阴影模式 void glShadeMode(GLenum mode); 函数功能:设置阴影模式。 输入参数:阴影模式类型mode。mode取值为 GL_FLAT或GL_SMOOTH。当阴影模式为 GL_FLAT时,多边形用一个顶点的颜色进行绘 制;当阴影模式为GL_SMOOTH时,多边形用各 个顶点颜色的插值结果进行绘制。 输出参数:无 返回值:无28五、颜色和光照 3、材质 void glMateriali,f(GLenum face,Glenum pName, TYPE param); void glMateriali,fv(GLenum face,Glenum pName, TYPE *param); 函数功能:定义当前多边形的材质。 输入参数:参数face表示材质应用于多边形的哪个面 (
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号