• 744.50 KB
  • 2021-05-18 发布

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

  • 17页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
‎《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状态机 参见讲稿章节:1‎ ‎ OpenGL是一个状态机。可以通过glEnable来启用状态,glDisable来禁用状态。‎ 例题:‎ 单选题:‎ 1、 ‎ 若要启用光源,需要调用以下哪个函数?( )‎ A.glEnable(GL_LIGHTING) B. glEnable(GL_TEXTURE_2D)‎ C. glEnable(GL_BLEND) D. glEnable(GL_CLIP_PLANE)‎ ‎ ‎ ‎★考核知识点: OpenGL库函数的特点 参见讲稿章节:1‎ OpenGL库函数用后缀表示入口参数类型。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_POLYGON ‎ B. GL_LINES C. GL_LINE_STRIP D. GL_LINE_LOOP ‎★考核知识点: 颜色模式 参见讲稿章节:3‎ 在OpenGL中颜色有两种模式:RGB模式和颜色索引模式。‎ 明暗处理方式将会影响最终的颜色显示,明暗处理方式有两种:GL_FLAT平面模式和GL_SMOOTH光滑过渡模式。‎ 例题:‎ 单选题:‎ 1、 在程序中绘制了一个带颜色的三角形,其中三个顶点分别绘制三种不同的颜色,若要实现三个顶点分别为三种颜色的彩色三角形,应调用下面哪个函数?()‎ A. glColor3f()‎ B. glShadeModel(GL_FLAT);‎ C. glShadeMode(GL_SMOOTH);‎ D. glHint()‎ ‎★考核知识点: 多边形的绘制 参见讲稿章节:2‎ OpenGL中规定的多边形必须是凸多边形。‎ 绘制多边形时,图元顶点的连接方式有:‎ ‎ 程序格式为:‎ ‎ ‎ 约定“顶点以逆时针顺序出现在屏幕上的面”为“正面”,另一个面即为“反面”。‎ 多边形的绘制模式有:(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_REPEAT和GL_CLAMP两种不同的重复方式。‎ (1) 选择纹理 glBindTexture(GL_TEXTURE_2D,texture[0]);‎ (2) 坐标映射 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()‎ 二、主观部分:‎ 此类题目制作说明:请在此处增加考核知识点中涉及公式明示。请设置部分例题进行练习掌握,此例题可以为任课教师提供的题库题目,采纳题库题目需低于题库本项题目的30%。题目内容计算过程及答案请删除,不提供给学生。‎ ‎★考核知识点: OpenGL的正确认知 参见讲稿章节:1.1‎ ‎ 能准确定位OpenGL。‎ OpenGL是一个开放的图形库;OpenGL是一套底层三维图形API;OpenGL是与硬件无关的软件接口。‎ 例题:‎ 填空 1、 OpenGL是一个 与图形的 接口,实际上就是一个三维图形和模型库,可以在任意平台和操作系统上运行。‎ ‎★考核知识点: OpenGL函数库 参见讲稿章节:1.3‎ ‎ 了解OpenGL函数库及其区别。掌握库函数的特点,如前缀、后缀。‎ OpenGL核心库是GL;实用库是GLU;工具库是GLUT(该库函数主要提供基于窗口的工具,并且不依赖于运行环境,因此OpenGL的工具库可以在所有OpenGL平台上运行);辅助库AUX.‎ 例题:‎ 1、 OpenGL的辅助库函数前缀是 。‎ 2、 OpenGL中的 和 可以在所有的OpenGL平台上运行。‎ ‎★考核知识点: GLUT窗口函数 参见讲稿章节:1.5‎ 掌握Win32 Console Application工程框架中GLUT窗口函数的使用。‎ 如程序:‎ ‎#include‎ void myDisplay(void)‎ ‎{‎ ‎ glClear(GL_COLOR_BUFFER_BIT);‎ ‎ glRectf(-0.5f,-0.5f,0.5f,0.5f);‎ ‎ glFlush();‎ ‎}‎ int main(int argc,char *argv[])‎ ‎{‎ ‎ glutInit(&argc,argv);‎ ‎ glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);‎ ‎ glutInitWindowPosition(100,100);‎ ‎ glutInitWindowSize(400,400);‎ ‎ glutCreateWindow("第一个opengl程序");‎ ‎ glutDisplayFunc(&myDisplay);‎ ‎ glutMainLoop();‎ ‎ return 0;‎ ‎}‎ 该程序为最简单的基于win32控制台窗口应用程序。其中:‎ ² ‎#include是将能创建窗口的GLUT库包含进来。‎ ² glutInit(&argc,argv)GLUT初始化 ² glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE)GLUT库在创建窗口的时候使用哪种类型的显示模式,这是的标志GLUT_SINGLE告诉它使用单缓冲区窗口,并且是RGB颜色模式。‎ ² glutInitWindowPosition(100,100);初始化窗口在屏幕中的位置 ² glutInitWindowSize(400,400);初始化窗口的大小 ² glutCreateWindow("第一个opengl程序");在屏幕上创建窗口,窗口的名字将显示“第一个opengl程序”‎ ² glutDisplayFunc(&myDisplay);显示回调函数,将要在窗口中绘制的内容需在函数myDisplay中,GLUT会自行调用。‎ ² glutMainLoop();消息循环 例题:‎ 填空题:‎ 1、 glutInitDisplayMode()函数的作用是__________。‎ ‎★考核知识点: OpenGL颜色 参见讲稿章节:3‎ OpenGL颜色模式包括了:‎ RGB模式,即所有颜色定义全用RGBAlpha三个值;可以用glColor*()来定义当前颜色。‎ 颜色表模式,每一个像素的颜色是用颜色表中的某个颜色索引值表示。‎ 在OpenGL中多边形的填充处理方式为明暗处理,包括两种:平面明暗处理GL_FLAT,即用单一颜色填充;平滑明暗处理GL_SMOOTH,该模式下填充颜色过渡自然连续。‎ 例题:‎ 填空题:‎ 1、 计算机颜色通常用___、____、__ ___三个值来表示。‎ ‎2、几何图元的明暗处理方式是 和 。‎ ‎★考核知识点: OpenGL三维渲染管线 参见讲稿章节:4‎ OpenGL采用右手坐标系。‎ OpenGL渲染管线是指三维图形渲染的过程中显卡执行、从几何体到最终渲染图像、数据传输处理计算的过程。‎ 渲染管线示意图见下图。‎ ‎(中文渲染管线示意图见下)‎ 其中顶点变换中每个坐标系简介如下:‎ 模型坐标系(MC):也称为物体坐标系,是特定物体相关联的坐标系。当物体位移或改变方向时,和该物体相关的坐标系也随之移动和改变方向。‎ ‎(模型顶点的坐标都是在模型坐标系中描述的。)‎ ‎(如“向前走一步”,则是向你的物体坐标系发指令;“前后左右”这样的概念只有物体坐标系才有意义;“向左转”是物体坐标系;“向东”是世界坐标系的概念。)‎ 世界坐标系(WC):这是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架,另一方面说,能用世界坐标系描述其他坐标系的位置,而不能用更大的坐标系来描述世界坐标系。‎ 视图坐标系(VC):这是一种特殊的物体坐标系,该物体坐标系定义摄像机的屏幕可视区域。关于摄像机坐标系的轴向约定可能不同。‎ ‎(Opengl采用右手坐标系,即摄像机在原点,X轴向右,Z轴向前/外,Y轴向上。2D屏幕上显示的内容就是3D摄像机坐标系通过投影转换呈现的。)‎ 投影坐标系(PC):将世界坐标系中的物体映射到视图坐标系(屏幕坐标系)上的方法称为投影。投影的方式包括平行投影和透视投影两种。‎ 设备坐标系(DC):即最终呈现在显示设备上的窗口坐标。Windows窗口坐标为左下角为原点,X轴向右为正,Y轴向上为正。‎ 例题:‎ 问答题:‎ 1、 描述一下OpenGL的渲染管线。‎ ‎★考核知识点: 变换及变换函数 参见讲稿章节:4‎ ‎ 在三维图形渲染管线中,能从模型坐标系变换到世界坐标系的变换是“模型变换(几何变换)”;将世界坐标系中的物体映射到视图坐标系的变换为“投影变换”。将投影平面上的画面映射到窗口上的变换为“视口变换”。将观察坐标系变换到世界坐标系,即调整观察视点的变换为“视图变换”,视图变换与模型变换是互逆变换。‎ 投影变换包括正交投影和透视投影。‎ 几何变换是操作几何对象,包括平移、旋转、缩放。‎ • 平移变换函数glTranslate*()‎ • 旋转变换函数glRotate*()‎ • 放缩变换函数glScale*()‎ • 视图变换函数gluLookAt(GLdouble eyex,Gldouble eyey,GLdouble eyez, ‎ GLdouble centerx,GLdouble centery, GLdouble centerz,‎ GLdouble upx, GLdouble upy, Gldouble upz)‎ 其中参数:‎ eyex/eyey/eyez:前三个参数表示了观察点的位置;‎ centerx/centery/centerz:中间三个参数表示了观察目标的位置;‎ upx/upy/upz:最后三个参数代表从(0,0,0)到(x,y,z)的直线,它表示了观察者认为的“上”方向。 ‎ • 投影变换函数 要求掌握各函数及参数的正确使用。‎ (1) 正交投影函数glOrtho(GLdouble left,Gldouble right,Gldouble bottom,GLdouble top,GLdouble near,GLdouble far)‎ (2) 透视投影函数glFrustum (GLdouble left,Gldouble right, GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);‎ (3) 透视投影函数glPerspective(GLdouble fovy, GLdouble aspect,GLdouble zNear, GLdouble zFar)‎ • ‎ 视口变换函数 glViewport(GLint x,GLint y, GLsizei width, GLsizei height);‎ 例题:‎ 填空题:‎ 1、 glMatrixMode(GL_MODELVIEW);函数的作用是 。‎ 2、 如果有glFrustum(-1.5, 1.5, -1.5, 1.5, -10.0, 10.0),则近裁剪面的左下角坐标为 ,右上角坐标为 ;‎ 3、 如果有glFrustum(-1.5, 1.5, -1.5, 1.5, -10.0, 10.0),则远裁剪面的左下角的坐标为 ,右上角的坐标为 。‎ 4、 如果有glOrtho(-1.5, 1.5, -1.5, 1.5, -10.0, 10.0),则近裁剪面的左下角坐标为 ,右上角坐标为 ;远裁剪面的左下角的坐标为 ,右上角的坐标为 。‎ 5、 写出实现沿X轴正方向平移5个单位的函数语句 ‎ 6、 已知glViewport(0,0,width,height);定义了视口大小,设近裁剪面为0.1,远裁剪面为1000,观察视角为45度,该如何设置透视投影函数参数: ‎ 7、 gluLookAt函数的参数意义是 ‎ ‎★考核知识点: 矩阵堆栈 参见讲稿章节:4‎ 矩阵堆栈操作顺序与压入矩阵的顺序相反。‎ glPushMatrix()表示将所有矩阵依次压入堆栈,glPopMatrix()表示弹出堆栈顶部矩阵。‎ 在变换前需要把当前矩阵设置为单位矩阵:glLoadIdentity()‎ 例题:‎ 填空题:‎ 1、 glPopMatrix()函数的作用是 。‎ ‎2、矩阵堆栈操作与压入矩阵的顺序 。‎ ‎★考核知识点: 光源 参见讲稿章节:8‎ 绘制真实感图形可以通过添加光源和添加材质来实现。‎ OpenGL支持在同一场景中设置有限多个光源,通常可以设置8个不同颜色的光源。‎ 对光照效果的计算是由四个不同的光照分量叠加而成的:‎ (1) 环境光 环境光实际上模拟了环境中源自所有光源的散光,该光源所照射的物体在所有方向的表面都是均匀照亮的。‎ (2) 散射光 散射光具有方向性,来自于一个特定的方向,它根据入射光线的角度在表面上向不同方向均匀的反射开来。‎ (3) 镜面光 镜面光模拟光泽物体表面反射的光线。‎ (4) 发射光 发射光模拟那些源自某个物体的光。‎ 例题:‎ 填空题:‎ 1、 OpenGL对光照效果的计算是由四个不同的光照分量叠加而成的,即: 、 、 、 。‎ ‎★考核知识点: 光源RGB值与材质RGB值的关系 参见讲稿章节:8‎ 光源颜色分解为R、G、B三种成分,相当于R、G、B每种颜色的完全强度百分比。材质颜色是对光的R、G、B三原色的反射率来近似定义材料的颜色。‎ 如果一束OpenGL光线的成分是(LR,LG,LB),一种材质的成分(MR,MG,MB),那么进入眼睛的颜色值就是(LR*MR, LG*MG, LB*MB)。‎ 如果两束光进入人眼,它的成分分别是(R1,G1,B1)和(R2,G2,B2),那么叠加在一起的光颜色就是(R1+R2,G1+G2,B1+B2),当值超过1时,它会被自动截取为1.‎ 例题:‎ 问答题:‎ ‎1、材质RGB值和光源RGB值都用相同的方式表示,他们意义一样吗?‎ ‎★考核知识点: 添加光照的步骤 参见讲稿章节:8‎ (1) 为场景物体的顶点提供法线向量,这些法线确定了物体各个顶点相对于光源的方位;函数为glNormal*();‎ (2) 启用光照计算,然后创建、选择一个或多个光源,并在场景中为光源定位;‎ 创建光源glLight*()‎ 启动光照glEnable(GL_LIGHTING)‎ 激活某个光源glEnable(GL_LIGHT0)‎ (3) 创建并选择光照模型,它定义了全局环境光的等级和观察点的有效位置等;‎ glLightfv(GL_LIGHT0,GL_POSITION,light_position),注意light_position最后的参数值,若为0则代表光源无限远,即平行光源,否则代表位置性光源。‎ glLightModel*()函数来制定光照模型的所有属性。‎ (4) 为场景中的物体定义材质属性。‎ 定义材质:glMaterial*()‎ 例题:‎ 问答题:‎ 1、 描述一下向OpenGL场景中添加光照的四个步骤。‎ 程序设计题:‎ ‎1、写出设置材质的漫反射光成分的函数。‎ ‎★考核知识点: 目标&源 参见讲稿章节:11‎ 目标颜色:已经存在于颜色缓冲区中的颜色值,即已绘制的颜色。‎ 源颜色:来自于渲染命令的颜色,即新绘制的颜色。‎ 例题:‎ 判断题:‎ ‎1、目标颜色就是来将要绘制的颜色。()‎ ‎★考核知识点: 设置混合因子 参见讲稿章节:11‎ glBlendFunc(源因子,目标因子);‎ 掌握常见的混合因子设置方法,示例参看PPT。‎ 如果想要将一幅图像的黑色背景完全镂空,混合因子应当设置为glBlendFunc(GL_DST_COLOR, GL_ZERO);‎ 例题:‎ 填空题:‎ 1、 假设先绘制的三角形颜色为(0.0,1.0,0.0,0.5),后绘制的三角形颜色为(1.0,0.0,0.0,0.75),如果要将这两个图形形成叠加效果,那么该如何设置混合因子函数:______________‎ ‎★考核知识点: 三维混合 参见讲稿章节:11‎ ‎ 在一个三维场景中,如何绘制半透明物体是一个难点。基本的思想是先绘制所有不透明的问题,然后将深度缓冲区设为“只读”状态,根据混合的原理(注意目标颜色与源颜色的顺序)绘制所有半透明物体,最后将深度缓冲区还原为“可读写”状态。‎ 例题:‎ 问答题:‎ 1、 描述在三维混合场景中,绘制透明和半透明物体的顺序?‎