一、选择题:(1-20为单选每题两分,21-25为多选每题三分,少选得一分,错选不得分)
1. DirectX专用的坐标系是()
A.右手坐标系 B.左手坐标系 C.世界坐标系 D.本地坐标系
2、下列有关灯光的说法错误的是()
A. D3D中一共有三种光源,分别是点光源,方向光,聚光灯。
B. 点光源没有方向,所以计算起来较为简单
C. 当声明光源类型为聚光灯时,需要设置两种衰减系数分别是随距离大小而衰减,另一个是随锥角大小而衰减
D. 使用光照模型时,最后一步别忘了激活光照,函数是SetLight(0,&light);
3、 以下关于深度缓冲,说法错误的是()
A. 激活深度缓冲后,必须设置深度缓冲的测试函数
B. 利用深度缓冲,可以使图形的渲染速度加快
C. 使用深度缓冲区时,首先必须得创建深度缓冲区
D. 渲染图形之前,clear函数中必须清空深度缓冲区
4、 向量的说法错误的是()
A.向量可以用单行多列矩阵表示,也可以用多行单列矩阵表示
B.向量乘以一个系数,各分量之间的比例不变
C.已知有向量P和Q,P-Q可以用QP向量表示
V
||V||
D.得到单位向量的函数是D3DXVec3Identity(),计算公式是
E.向量表示方向时,表示从原点指向该点的方向
5、 向量有点积和叉积之分,下列说法错误的是()
A.向量点积描述了两向量之间的夹角关系
B.向量的点积值是一个标量,而叉积结果是一个矢量
C叉积结果可以得到一个第三向量,命名为法线向量
D.可以用左手法则,求出法线的方向
E.向量中只要大小和方向一样,就可以说这两个向量相等
6、 矩阵的说法正确的是()
A.两矩阵相乘,遵循交换率规则
B.矩阵的除法运算也可以看成乘法运算,只要求出矩阵的逆矩阵即可
C.任何矩阵都有逆矩阵
D.单位矩阵就是矩阵对角线上的元素全为1
7、 下列矩阵中,哪个是围绕Y轴旋转的矩阵()
cosβ sinβ 0 0
-sinβ cosβ 0 1
0 0 1 0
0 0 0 1
Cosβ 0 -sinβ 0
0 1 0 0
sinβ 0 cosβ 0
0 0 0 1
1 0 0 0
0 cosβ sinβ 0
0 –sinβ cosβ 0
0 0 0 1 A B.. C.
8、下列说法错误的是( )
A.正交投影是物体与摄像头之间的连线都是平行的,所以投影后大小不变。
B.透视投影范围是一个截头体,一共有六个面,分别是左、右、顶、底、远、近面。
C.摄像头的焦距受垂直视角的变化而变化。
D.在场景坐标系下,摄像头的投影平面与左右截面相交于X=1和X= -1的位置
9、判断下列代码中一共有多少个函数 ()
if(SUCCEEDED(g_pd3dDevice->BeginScene()))
{
g_pd3dDevice->SetStreamSource(0,g_pVB,sizeof(CUSTOMVERTEX));
g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,1);
g_pd3dDevice->EndScene();
}
A. 5 B. 6 C. 7 D. 8
10.下列哪个选项是3D硬件加速的设备 ()
A..D3DDEVTYPE_HAL
B. D3DDEVTYPE_REF
C. D3DDEVTYPE_SW
D. D3DDEVTYPE_FORCE_DWORD
11.下列选项中错误的是()
A.物体的动画可以通过乘以一个矩阵来实现,比如:平移,旋转,伸缩矩阵
B.已知物体运动之后的位置,也知道物体运动的矩阵,若想求物体运动之前的位置,可以用物体现在的位置向量乘以运动矩阵的逆矩阵即可
C.表示物体的向量之所以用四维表示,是为了把向量平移的运算也变成乘法。
D.场景变换矩阵的由来就是坐标系变换的矩阵
12.以下关于四元数的说法错误的是()
A.四元数可以用来表示物体的旋转,他将比矩阵方法运算快
B.四元数转换成矩阵的函数是:D3DXQuaternionRotationMatrix();
C.围绕任意轴旋转的函数是:D3DXQuaternionRotationAxis();
D.四元数做旋转时,四元数可以表示为:Q=COSβ/2+ASinβ/2,代表物体围绕A向量旋转β。
13.以下多边形填充模式中,哪个是线性渲染()
A.D3DFILL_POINT B.D3DFILL_WIREFRAME C.D3DFILL_SOLID
D.D3DFILL_FORCE_DWORD
14.下列说法错误的是()
A.显卡显示图形的流水线是先处理点的坐标,再处理各种颜色混合。
B.图形的渲染方法有两种分别是Flat渲染和Gouraud渲染
C.Gouraud渲染方法只采用三角形第一个顶点的颜色渲染图形,省去了颜色线性插值的步骤
D.定义图形渲染方法为Flat的函数是SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT).
15.图形反锯齿的说法错误的是()
A.图形渲染反锯齿只能做到让锯齿尽量少,不能完全没有锯齿
B.图形反锯齿的方法是多重采样
C.D3D一共支持1——16点的多重采样【2-16点的多重采样】
D.使用多重采样时,得先通过函数CheckDeviceMultiSampleType()检查设备是否支持我们所需要点的多重采样
16. 下列有关雾化的说法错误的是( )
A.雾化处理可以产生逼真的效果。
B.雾化处理中像素处理方法比顶点处理方法复杂,但渲染效果比顶点处理好。
C.设置雾化计算方法为线性处理时,必须指定颜色值和密度值等参数。
D.设置雾化处理方法为像素处理,计算方法为指数平方的函数是:
SetRenderState(D3DRS_FOGTABLEMODE,D3DFOG_EXP2);
17.下列说法错误的是()
A.透明混合方法能够显示出任意透明值的图形
B.透明测试方法渲染图形,通过测试的则透明处理,没通过测试的显示图形
C.透明混合方法渲染图形时,必须先关闭透明混合渲染不透明的图形。
D.透明测试时,必须指定测试的透明临界值
18.纹理的说法错误的是()
A.纹理动画中,必须指定生成的纹理坐标是二维的还是三维的。
B.文理自动生成中,必须得设置纹理坐标变换。
C.纹理自动生成的方法,可以产生倒影这样的特殊效果。
D.纹理层的坐标索引,是为了指定具体纹理层的纹理坐标
19.在自定义摄像头类时,下列说法错误的是:()
A.必须保证鼠标始终都在窗口的中间位置。
B.fps值就是反映Render函数每秒钟调用的次数
C.在得到场景变换矩阵时,第二个参数代表摄像头的位置,第三个参数代表场景坐标系的z轴方向
D.摄像头有平移和旋转两种动画
20.下列显示窗口的步骤正确的是()
1, 显示窗口ShowWindow();
2, 自定义一个窗口类,并初始化该类
3, 注销窗口类
4, 创建窗口CreateWindow();
5, 消息循环处理
6, 强制显示窗口UpdateWindow();
7, 注册窗口类;
A.2,7,1,6,4,5,3 B,2,7,3,4,1,6,5 C,2,7,3,6,1,5,4 D,2,7,4,1,6,5,3
21.下列说法错误的是()
A. 在初始化窗口类时,必须指定消息响应的回调函数的指针
B. WindowS是多任务的操作系统,所以一个程序执行有好多进程。【多线程】
C. 使用系统内部的鼠标位图用函数LoadIcon(NULL,…)指定。
D. 得到系统内部的画刷通过函数GetStockObject()指定
E. 创建一个按钮时,也必须自定义窗口类。
22.凹凸纹理中,下列说法正确的是()
A. 利用凹凸纹理技术时,一共使用了两张纹理图
B. 第一个图是普通的纹理资源图
C. 第二个图是凹凸纹理图,图里存储着每个点的du和dv值【轮廓图】
D. 创建的凹凸纹理中的某点,存储的分别是du和dv值,du值是该点前一个点的高度值减去后一个点的高度值,dv值是该点上一个点的高度值减去下一个点的高度值
E. 得到轮廓图的宽度和高度的值,是通过函数LockRect(),返回D3DSURFACE_DESC类型的结构体指针。
23.下列有关Dot3Product技术,说法正确的是()
A. 这个技术是一种模拟凹凸效果,通过一个含有法线的纹理图实现。
B. 这个技术通过把鼠标位置坐标变成一个单位向量,然后再把单位向量转换成颜色值。
C. 在设定纹理混合属性时,在指定第二个颜色值时,直接用上面转换成的颜色值【需要注册】
D. 把向量转换成颜色值的函数是r=128*v.x+128,g=128*v.y+128,b=128*v.z+128;【127】
24.下列说法正确的是()
A. 物体的动画有两种,第一种是普通的动画,另一种是帧动画。
B. 帧动画是预先定义物体运动的起始位置,然后通过一个线性插值函数实现动画过程
C. 例如:第一个位置是V1,末位置是V2,则插值函数是V2(1-t)+V1*t;(0<=t<=1)
D. 四元数在描述旋转时也可以实现帧动画,四元数插值函数是D3DXQuaternionRotationYawPitchRoll()
25.皮肤技术的叙述正确的是()
A. 使用骨骼的优点是可以渲染不同的虚拟人物,也可以实现顶点的加重值。
B. 使用顶点加重值是为了让网格与网格之间有动画时,不出现关节脱节的情况
C. 最近游戏中,一个人物网格分别由不同的部分网格组成。
D. 矩阵调色板中存储了矩阵的索引号,一共有256个。
E. 在定义顶点信息时,四个加重值必须都得赋值。
二、简答题:
26.(3分)写出纹理过滤的四种方法:
27.(3分)写出纹理寻址的四种方法:
28.(3分)在使用引擎时,写出加载引擎环境的要点
29.(5分)在定义D3DPRESENT_PARAMETERS d3dpp当前显示属性时,d3dpp.SwapEffect和d3dpp.BackBufferFormat分别代表什么意思?在使用全屏显示时,需要设置哪些类型?
30.(5分)Clear函数中清空深度缓冲区和颜色缓冲区时,把下面函数参数补全。
Clear(0,NULL,__________________,D3DCOLOR_XRGB(0,0,255),1.0f,0.0f);
设置纹理混合时,指定纹理混合为两颜色值相乘,补全下列参数
SetTextureStageState(0,D3DTSS_COLOROP,__________________);
补全下列函数的参数,设置深度缓冲区的测试函数为小于通过测试:
SetRenderState(________________,D3DCMP_LESS);
补全定义雾化颜色的函数:
SetRenderState(________________,0x00ffffff);
顶点缓冲区中定义了6个点,用这些点画两个三角形,补全函数数是:
g_pd3dDevice->DrawPrimitive(________________,2);
31.5分)写出把后台背景显示到前台的函数__________________;
写出设置顶点数据流的函数__________________;
写出索引缓冲区两种可行的点格式________________;
写出得到平移动画的矩阵的函数______________;
写出响应键盘按键消息的函数__________________;
32.(6分)已知一个人的10个部位分别是:腰(waist),胸(shest),脖(neck),头(head),左手手臂(Lshader),右手手臂(Rshader),左脚(Lfoot),右脚(Rfoot),左手手指(Lfinger),右手手指(Rfinger),它们都是通过腰部的正方体变换得倒。(例如:脖子是先由腰部正方体伸缩,然后再从腰部位置移到适当的位置形成。)各部位的旋转都是以各自的本地坐标系旋转(至于脖子怎么旋转你就不用问了J)
他们之间的关系是:腰—胸—脖—头,腰—胸—左手手臂—左手指,腰—右脚。
已知各个关节的运动矩阵如下:
腰 1.平移 左手指 12.平移 ,13.旋转,14,伸缩
胸 2.平移 右手指 15.平移 ,16.旋转,17.伸缩
脖 3.平移, 4.旋转, 5.伸缩 头 18.平移,19.旋转, 20.伸缩
左手臂 6.平移 ,7.旋转, 8.伸缩 左脚 21.平移,22.旋转,23.伸缩
右手臂 9.平移 ,10.旋转, 11.伸缩 右脚 24.平移,25.旋转, 26.伸缩
写出左手指动画需要的矩阵:(用前面的序号表示)
写出头动画需要的矩阵:
写出右脚动画需要的矩阵:
三、上机题:(答完前面题,交卷后再做上机题)(15分)
画一个四棱锥,窗口大小为(100,100,300,300),图形显示在窗口的(10,10,200,200)区域内,同时棱锥围绕y轴旋转,(加上深度缓冲区) |