当前位置:文档之家› 《3D游戏软件设计》复习资料

《3D游戏软件设计》复习资料

《3D游戏软件设计》课程第一版期末复习资料《3D游戏软件设计》课程第一版(PPT)讲稿章节目录:第1章OpenGL简介1.1 OpenGL简介1.2 OpenGL的功能及工作流程1.3 OpenGL函数库1.4 OpenGL开发环境1.5 创建一个简单的OpenGL工程第2章基本图元绘制2.1 点、线段的绘制2.2 虚线、多边形的绘制第3章颜色3.1 计算机颜色的概念3.2 OpenGL的颜色模式3.3 两种颜色模式的应用3.4 颜色应用举例3.5 明暗处理第4章变换4.1 用相机模拟的思路来理解变换4.2 OpenGL坐标系4.3 三维图形显示流程4.4 OpenGL几何变换4.5 OpenGL视图变换4.6 OpenGL投影变换4.7 OpenGL裁剪变换4.8 OpenGL视口变换4.9 OpenGL矩阵堆栈4.10 OpenGL变换实例第5章动画5.1 计算机动画5.2 双缓冲技术5.3 GLUT窗口动画的实现第6章绘制三维图形6.1 绘制立方体6.2 在3D空间用OpenGL自带的库函数绘制第7章三维场景漫游7.1 绘制一个简单的三维场景7.2 第一人称视角行走的实现方法7.3 键盘控制7.4 鼠标控制第8章光照8.1 基本概念8.2 光源8.3 材质8.4 光照模型第9章纹理9.1 纹理基本概念9.2 OpenGL纹理实现过程(PPT02 ~ PPT04)9.3 OpenGL纹理实例第10章显示列表10.1 显示列表概念10.2 使用显示列表的步骤10.3 显示列表的应用10.4 显示列表实例第11章混合11.1 混合的概念11.2 混合的过程11.3 设置混合因子的函数11.4 混合方程式函数11.5 混合的应用11.6 三维混合第12章建立非控制台的windows程序框架12.1 windows应用程序基本框架12.2 基于windows应用程序框架的OpenGL程序设计第13章纹理混合综合实例一、客观部分:(单项选择、多项选择、不定项选择、判断)此类题目制作说明:请在此处增加考核知识点中涉及公式明示。

请设置部分例题进行练习掌握,此例题可以为任课教师提供的题库题目,采纳题库题目需低于题库本项题目的30%。

题目内容计算过程及答案请删除,不提供给学生。

样例如下:★考核知识点: OpenGL状态机参见讲稿章节:1OpenGL是一个状态机。

可以通过glEnable来启用状态,glDisable来禁用状态。

例题:单选题:1、若要启用光源,需要调用以下哪个函数?()A.glEnable(GL_LIGHTING) B. glEnable(GL_TEXTURE_2D)C. glEnable(GL_BLEND)D. glEnable(GL_CLIP_PLANE)★考核知识点: OpenGL库函数的特点参见讲稿章节:1OpenGL库函数用后缀表示入口参数类型。

i表示参数类型为整数型,f表示为float类型,v表示参数可用数组来替代一系列单个参数值。

参数类型后缀前带有数字2、3、4,2代表二维,3代表三维,4代表alpha值。

如图所示:例题:单选题:1、OpenGL库函数中后缀字幕v表示函数参数可用类型为()。

A.整型数据B.浮点型数据C.数组型数据D.三维坐标★考核知识点: 基本图元的绘制参见讲稿章节:2绘制点:glVertex*()点大小设置函数:glPointSize(float size),注意,该函数需要放在绘制点函数之前。

绘制线段:线段连接方式GL_LINES GL_LINE_STRIP GL_LINE_LOOP线宽度设置函数:glLineWidth(float width)例题:单选题:1、要得到如右图示的效果,glBegin() 函数的类型参数可取为()。

A. GL_POLYGONB. GL_LINESC. GL_LINE_STRIPD. GL_LINE_LOOP★考核知识点: 颜色模式参见讲稿章节:3在OpenGL中颜色有两种模式:RGB模式和颜色索引模式。

明暗处理方式将会影响最终的颜色显示,明暗处理方式有两种:GL_FLAT平面模式和GL_SMOOTH光滑过渡模式。

例题:单选题:1、在程序中绘制了一个带颜色的三角形,其中三个顶点分别绘制三种不同的颜色,若要实现三个顶点分别为三种颜色的彩色三角形,应调用下面哪个函数?()A.glColor3f()B.glShadeModel(GL_FLAT);C.glShadeMode(GL_SMOOTH);D.glHint()★考核知识点: 多边形的绘制参见讲稿章节:2OpenGL中规定的多边形必须是凸多边形。

绘制多边形时,图元顶点的连接方式有:程序格式为:约定“顶点以逆时针顺序出现在屏幕上的面”为“正面”,另一个面即为“反面”。

多边形的绘制模式有:(1)填充式(默认) –GL_FILL(2)轮廓线式–GL_LINE (3)顶点式–GL_POINT(4)镂空图案填充式,使用函数glPolygonMode(GL_FRONT, GL_FILL); 来设置。

例题:判断题:1.OpenGL约定顶点以逆时针顺序出现在屏幕上的多边形为反面。

()★考核知识点: 复合变换的顺序参见讲稿章节:4在复合变换中,函数的调用顺序与实际变换顺序是相反的。

“先移动后旋转”和“先旋转后移动”得到的结果不一样。

例题:判断题:1、OpenGL几何变换函数调用顺序和预想的操作顺序是一致的。

()★考核知识点: 动画参见讲稿章节:5出于效率考虑,OpenGL将绘制命令做了缓冲处理,单缓冲可通过调用glFlush()函数,双缓冲可通过glutSwapBuffer()函数,强制绘制器将结果立即输出。

在OpenGL中要实现动画效果,需要采用双缓冲技术。

在GLUT窗口模式中,可以通过函数glutInitDisplayMode(GLUT_DOUBLE)设置当前窗口模式为双缓冲模式。

例题:选择题:1、在OpenGL中要实现动画效果,需要采用()技术A.单缓冲B.关键帧C.双缓冲D.深度缓冲★考核知识点: 纹理定义参见讲稿章节:9纹理有一维纹理、二维纹理、三维纹理。

例题:判断题:1.在OpenGL中,纹理可以是一维、二维或三维。

(√)★考核知识点: 纹理实现过程参见讲稿章节:9纹理实现过程较为复杂,注意各个步骤的函数。

(1)启用纹理glEnable(GL_TEXTURE_2D);(2)定义纹理定义纹理的函数较为复杂,具体看PPT中举例。

glTexImage2D()(3)创建纹理对象glGenTextures(1,&texture_ID)(4)纹理滤镜纹理滤镜主要包含了放大、缩小、重复三种方式。

注意GL_REPEA T和GL_CLAMP两种不同的重复方式。

(5)选择纹理glBindTexture(GL_TEXTURE_2D,texture[0]);(6)坐标映射glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); 例题:多选题:1、纹理滤镜函数glTexParameter可以实现对纹理的操作包括()A.放大纹理B.缩小纹理C.重复纹理D.定义纹理★考核知识点: 显示列表参见讲稿章节:10在编写OpenGL程序时,遇到重复的工作,可以创建一个显示列表,把重复的工作装入其中,并在需要的地方调用这个显示列表。

显示列表的使用步骤:(1)分配显示列表编号 glGenLists()(2)创建显示列表 glNewList()(3)调用显示列表 glCallList()显示列表只能装入OpenGL函数,不能装入其它内容,并非所有的OpenGL 函数都可以装入显示列表中。

例题:单选题:1、在编写OpenGL程序时,遇到重复的工作,可以通过创建()的方法来优化程序。

A.函数B.显示列表C.顶点数组D.双缓冲判断题:1、用于查询的函数可以被装入到显示列表中。

()★考核知识点: 深度&深度缓冲参见讲稿章节:11深度,就是在OpenGL坐标系中,像素点的z坐标距离摄像机的距离。

摄像机可能放在坐标系的任何位置,那么就不能简单的说z数值越大或越小,就是越靠近摄像机。

深度缓冲区,是这样一段数据,它记录了每一个像素距离观察者有多近。

在启用深度缓冲测试的情况下,如果将要绘制的像素比原来的像素更近,则像素将被绘制,否则,像素会被忽略掉,不进行绘制。

例题:单选题:1、在OpenGL坐标系中,像素点的Z坐标距离摄像机的距离被称之为()。

A.深度缓冲B.深度测试C.深度D.深度截取2、启动深度缓存区的函数为?()A.glEnable(GL_DEPTH_CLAMP);B.glEnable(GL_DEPTH_TEST);C.glEnable(GL_CULL_FACE);D.glClear(GL_DEPTH_BUFFER_BIT);3、清除深度缓存区的函数为?()A.glEnable(GL_DEPTH_CLAMP);B.glEnable(GL_DEPTH_TEST);C.glEnable(GL_CULL_FACE);D.glClear(GL_DEPTH_BUFFER_BIT);★考核知识点: 绘制三维实体参见讲稿章节:10可以使用glut库和aux库函数绘制三维实体。

如:glutWireSphere(GLdouble radius, GLint slices, GLint stacks); 线框球glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); 实心球glutWireCube(GLdouble size); 线框立方体glutSolidCube(GLdouble size); 实心立方体glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 线框圆环glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 实心圆环glutWireIcosahedron(void); 线框20面体glutSolidIcosahedron(void); 实心20面体glutWireOctahedron(void); 线框8面体glutSolidOctahedron(void); 实心8面体例题:单选题:1.以下哪个函数可以绘制出一个实心球体?()A.glutWireSphere()B.glutSolidSphere()C.glutSolidCube()D.glutWireCone()二、主观部分:此类题目制作说明:请在此处增加考核知识点中涉及公式明示。

相关主题