计算机游戏期末
一、简答题 简述图形界面的Windows框架 Windows框架是我们在Windows系统下运行的程序必须的架构,由三个函数构成: WinMain ()程序入口,功能为定义一个Windows窗口的样式、大小等,并建立这个窗口; MsgProc ()窗口调用函数,在整个运行周期中随时对回调的函数所定义的外部事件(鼠标 移动、点击窗口变化、键盘和其他函数发出的消息)做出反应; GameLoop ()消息循环,利用Windows的消息机制做成的主循环函数,它被程序反复执行, 作用是侦听消息,有消息是返回Windows的消息链,没有消息时就执行0penGL的图形处 理 Render ()。 2、简述OpenGL的程序框架 OpenGL的基本框架由四个函数组成: SetupPixelat (HDChDC)检测安装 OpenGL init (int Width, int Height) OpenGL 视口进行变换 Cleanup ()清楚OpenGL的连接 Render () OpenGL 图形处理 3、简述OpenGL的构图形式 OpenGL的构图形式为,在函数对gIBegin (TYPE) ,glEnd ()之间给出图形的顶点坐标集。 连接定点的方式山gIBegin中的类型决定。基本形式如下: gIBegin (TYPE);〃连接各顶点的方式 〃图形的定点坐标集; glEnd () 4、至少列举8种OpenGL构图类型 GL_POINTS单个顶点集 GL_LINES多组双顶点线段 GL_LINE_STRIP 不闭合折线 GL_LINE_LOOP 闭合折线 GL_POLYGON单个简单填充凸多边形 GL_TRAINGLES多组独立填充二角形 GL_QUADS多组独立填充四边形 GL_TRAINGLE_STRIP线性连续填充二角形串 GL_TRANGLE_FAN扇形连续填充二角形串 GL_QUAD_STRIP连续填充四边形串 5、简述 OpenGL 中 gIPu筒Matrix()和 glPopMatrix()函数的应用 glPushMatrix()函数:使用此函数就是要让0penGL记住空间中当前的这个位置,以便经过一 些变换后还能快速方便地回到此处位置。 glPopMatrix()函数:此函数通知OpenGL在访问过空间的其他位置之后,返回到原先记住的 位置。 6、简述OpenGL中坐标变换的三个函数应用 平移:gITranslatef (float x,float y,float z);将该函数以下的图形在三维坐标中移动(x,y,z) 旋转:gIRotatef(float angle,float a,float y,float z);将该函数以下的图形在指定轴上旋转angle度 缩放:glScalef(floatx,floaty,float z);x,y,z是沿三个轴向缩放的比例因了 7、OpenGL中,顶点在最终被绘制到屏幕上之前要经过哪3种类型的变换 视图变换:设定视点的位置 模型变换:在场景中移动物体 投影变换:定义视体和裁剪平面 8、OpenGL试图通过哪4种光的组合来模拟真实世界的光照 环境光、散射光、镜面反射光、发射光 9、简述OpenGL摄像漫游的实现原理 观察点在场景中位置改变的结果 gluLookAt(视点,目标点,视点方向)。 其中视点(观察点)是一个三维坐标量。 X量的变化就像是我们在场景中横向移动. Y匿的变化就像是我们的身体高度的变化(游戏中角色的站立、卧倒) Z鼠的变化就像是我们在场景中前后移动。 目标点、视点方向也分别是三维坐标置. 视点的变化,相当于我们人在场景中的移动。 日标点的变化,相当于我们人站着不动时,头或手中的相机上下左右移动的效果- 视点方向丫=1表示我们的头始终是正立的”如果你要表现在飞机里转弯看到大地倾斜的效 果,你可以试试改变视点方向的X, Z值. 10、简述OpenGL中纹理映射的技术原理 纹理映射是一项技术,其能够将3D图形从一堆有颜色的三角形变成可以像照片一样具有真 实感的场景。究其本质,纹理就是些图案。当纹理映射到一个多边形上时,纹理就随着多边 形的变换而进行相应的变换。 11、解释纹理坐标的应用 如果对一个2D纹理加上一个坐标系,那么就可以确定其上的每一个点并对其进行操作,每 一个点叫一个纹理坐标,通常以点(s,t)的形式表示。当纹理映射应用于表面时,使用参数 坐标(u,v)来定义其纹理在表面上的方向,u和v的取值在(0,1)的区间内,对于所进行 纹理映射的表面,其上的坐标U和V的最大值和最小值决定了纹理映射的范围。 12、简述OpenGL中实现天空体常用的两种方法 天空盒:用一个矩形方盒作为天空远景贴图的载体 半球形天空模型 13、简述MD2关键帧动画模型的原理 MD2是一种关键帧关键帧动画模型。所谓关键帧动画模型,就是构成模型的各个结构组件, 按一定的时间序列进行位置移动、旋转,形成模型的整个动作变化序列。 14、简述MDL骨骼动画模型的原理 骨骼动画模型是形象模型为蒙皮,动作架构为骨骼而有机组成的3D动画。其优势在于用线 段代表动物的骨骼关节,动物的一切复杂动作是用数据量极小的线段在空间位置的变换来表 示。真正的优势还在于骨骼和形象模型是可以分离和重新组合的。 15、简述粒子系统的原理 基本原理是用大量的粒子对仿真对象的流体力学原理进行模拟。 粒子系统是多个独立元素或粒子的一个集合,每个粒子具有独立的属性,比如速度、颜色和 生命周期等。每个粒了主要以其自主的方式进行运动,在一个给定的粒了系统中的粒了通常 共享一组公用的属性。 16、简述基于位置框的碰撞检测的基本原理 任何一个物体在场景中都有一个确定的位置、大小,可用一个位置框来表示。当一个运行物 体的位置框与另一个物体的位置框相遇或相交时,我们就说这两个物体发生了碰撞。 17、OpenGL颜色立方体模型 OpenGL通过三个独立的分量,红色分量、绿色分量和蓝色分量的强度来定义颜色。这些强 度的取值范围从0.0(无光强)~1.0 (最大光强)。 G.=从 0 至 I 的 枣、*示不村颜色分屈的ma(00. 10. QjO> 图6.3颜色立方体 18、简述OpenGL状态机的概念 OpenGL状态机山几百个设置项组成,在要做的每一件与OpenGL有关的事件中都会发生作 用,其影响着绘制的方方面面,有众多的状态函数用以控制状态机:如glGet()函数用于查询 状态机当前的设置。 19、OpenGL中如何实现点画线段 可以指定一个点画模式来绘制线段。点画模式定义了一个掩膜,用以确定线段的哪些部分该 绘制而哪些部分不绘制。使用点画模式之前,需要调用带有GL_LINE_STRIPPLE参数的 glEnable()函数来启用此项性能。然后,调用glLineStipple()函数设置点画模式,此函数定义 如下: void glLineStipple(Glint factoi;GLushort pattern);