Direct3D图形编程期末试题
一, 选择题:
1, 下列函数中与创建窗口无关的是______
A ValidateRect(hWnd, NULL); B RegisterClassEx( &wc );
C CreateWindow(); D CreateWindowEx();
2, 有关设置窗口函数的说法错误的是:
A 窗口函数是回调函数。 B 窗口函数名可以随便起。
C 在定义窗口类中设置窗口所对应的窗口函数。
D 在主函数中调用窗口函数。
E 在窗口函数中处理各种消息也可以处里自定义消息。
3, 以下与消息处理无直接关系的函数是:
A TranslateMessage( ); B DispatchMessage();
C PostQuitMessage( ); D DefWindowProc();
E GetMessage();
4, 选出消息结构体MSG 中不包含的分量是哪一个:
A HWND; B WPARAM;
C HINSTANCE D UINT;
E LPARAM;
5, 下列说法错误的是: A 创建完窗口后通过调用 ShowWindow();和 UpdateWindow();把窗口显示出来。
B 程序中我们使用结构 WNDCLASSEX 来定义窗口类。
C 当窗口销毁时 会发送 WM_DESTORY 消息,在相应的消息处理中我们会处理Direct3D 相关实例的释放;
D 通常我们不会在处理 WM_DESTORY 消息中调用PostQuitMessage();
6, 下列说法错误的是:
A Direct3DCreate9( D3D_SDK_VERSION );此函数返回D3D实例;
B DIRECT3DDEVICE9::CreateDevice(); 次函数创建设备实例;
C DIRECT3DDEVICE9::BeginScene()与DIRECT3DDEVICE9::EndScene();要求
成对使用,但可以嵌套使用。
D 在绘制图形之后必须调用函数DIRECT3DDEVICE9: resent();把后台缓存里的数据处理到前台,才能显示出图形。
7, 对函数HRESULT IDirect3DDevice9:: Clear(
DWORD Count, constD3DRECT *pRects, DWORD Flags,
D3DCOLOR Color, float Z, DWORD Stencil ); 的参数说明正确的有那几项:______________。(多选)
A 参数1,用来指出表示更新区域的矩形数目;
B 参数2,表示更新区域的矩形;
C 参数 1,和参数2,通常设置为NULL,表示更新区域未知;
D 参数3,指出清空的缓冲区标志;可取多种标志的组合;
E 参数6,指重置的模板值;
8, 以下叙述错误的是_____.
A IDirect3DDevice9: resent()函数将后台缓冲区的数据复制到前台。
B 结构 D3DPRESENT_PARAMETERS 定义了Direct3D设备相关信息;在创建设备实例之前,我们会定义一个此类型的变量并赋值,传给IDirect3D9::CreateDevice();函数,用来定制我们想获得的设备实例。
C IDirect3DDevice9::SetStreamSource();函数设置渲染数据流;
D IDirect3DDevice9::SetFVF(DWORD FVF);函数设置当前的渲染数据流中的顶点格式;但不强制要求FVF的格式与当前渲染数据流中相链接的顶点缓冲区中的顶点格式相同。
9,有关顶点缓冲区与索引缓冲区的说法正确的是__________
(多选)
A LPDIRECT3DVERTEXBUFFER9 g_pVB=NULL;定义了顶点缓冲区指针;
IDirect3DDevice9::CreateVertexBuffer();此函数用来创建顶点缓冲区。
B 对顶点缓冲区变量和索引缓冲区变量赋值时都要调用 Lock()函数给缓冲区加锁;并且在结束赋值时调用 Unlock()解锁。
C 索引缓冲区创建后,绘制前应使用函数IDirect3DDevice9::SetIndices();设置索引数组。
D 顶点缓冲区与索引缓冲区可单独使用,也可一同使用。
10,已知:索引数组中存储了9个索引值,通过函数DrawIndexedPrimitive();从第四个索引值开始,绘制两个三角形;下列实现正确的是:_____.
A DrawIndexedPrimitive(D3DPT_TRIANGLESTRIP,0,4,9,3,2);
B DrawIndexedPrimitive(D3DPT_TRIANGLESTRIP,0,9,0,3,2);
C DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,9,0,4,2);
D DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,9,3,2);
11,下列叙述错误的是:
A Direct3D标准的图形显示过程可分两个阶段,一,坐标变换和应用纹理,二,光栅化处理;
B 坐标变换不仅可以对物体的顶点位置变换,还可以包括顶点法线向量,纹理坐标;
C 在光栅化处理阶段,以纹理贴图的颜色和物体的颜色值决定最终的颜色值
D 坐标变换有有世界变换,观察变换,投影变换,和视区变换;
12,图形a 本地坐标,图形 b 为世界坐标;请选出正确描述这一变换过程的选项:
Y Y
Z Z
X X
A 把物体先缩放在平移最后旋转;
B 把物体先平移再缩放最后旋转;
C 把物体先旋转再平移最后缩放;
D 把物体先平移再旋转最后缩放;
13, 下列叙述正确的是:多选
A 在程序中应按,世界变换,观察变换,投影变换的顺序进行;
B 函数SetTransform(D3DTS_WORLD,&mat);设置了世界变换;
C 函数D3DXMatrixLookAtLH();把以世界坐标系表示的物体,处理到观察坐标系中。
D 函数D3DXMatrixLookAtLH();参数2,3,4分别为:观察点,被观察点,向上向量。
14, 有关视区变换说法错误的是:
A 视区变换是变换流水线的最后一步;
B 他将顶点从投影坐标系转换为屏幕坐标;
C 设置视区的函数为SetViewport();
D 对视区变换可设置多个矩形区;
15, 有关光照的说法错误的是:
A 环境光会照亮整个场景;
B 使用漫反射光时,要求点格式中包含法向量;
C 镜面反射计算量较大,因此缺省状态下不对物体进行镜面反射计算;
D 在场景中对光源的数量没有限制;
16, 下列说法正确的是:多选
A 光源属性定义了光的类型,位置,方向,衰减等信息;
B 相同的光源可以根据物体表面的材质的不同,通过不同的光照模型来显示;
C 光源类型包括点光源,聚光灯,方向光;
D 点光源由于不考虑方向和衰减所以计算量最小;
17, 下列说法错误的是:多选
A 光属性中Ambient,Diffuse,Specular 分别表示光在以不同的光照模型计算时的光源的颜色;
B 一个光源只能具有一个光照模型;
C 物体材质的反射系数在0-1之间取值;
D 函数SetRenderState(D3DRS_LIGHTING,TRUE);激活光照运算;
18, 有关纹理的说法错误的是:
A 纹理坐标一般用v ,u 来表示,分别对应文理的宽和高;
B bmp,tga,jpg类型的文件都可以加载到文理变量中;
C 网格若想贴上纹理需有纹理坐标;
D 在自定义点格式中可以提供多组纹理坐标;
19, 下列说法错误的是:
A Direct3D 支持多重纹理;
B Direct3D 最多支持8层纹理;
C 使用SetTextureStageState();设置纹理渲染状态;
D 若要是纹理起作用,调用SetRenderState();函数启用纹理;
20, 下列选项中设置线性纹理过滤的是:
A SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_ANISOTROPIC);
B SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);
C SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_POINT);
D SetSamplerState(0,D3DSAMP_MAXANISOTROPY,4);
21, 下列说法错误的是:
A 函数SetTextureStageState();的参数2 的值为D3DTSS_TEXCOORDINDEX时可用来设置纹理坐标生成的方法;
B 当纹理坐标生成的标志为 D3DTSS_TCI_SPHEREMAP 时,输出球面反射的纹理坐标;
C 当纹理坐标生成的标志为 D3DTSS_TCI_CAMERASPACENORMAL 时,以观察坐标系中的点坐标为该纹理层的纹理坐标输出;
D SetTextureStageState(0,D3DTSS_TEXTURETRANSFORMFLAGS,D3DTTFF_COUNT2);
设置纹理坐标以2维输出;
22, 列说法错误的是:
A SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE);设置纹理颜色混合方法为颜色相乘输出;
B SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_DISABLE);禁用纹理层0的
Alpha 通道;
C SetTextureStageState(0, D3DTSS_TEXCOORDINDEX,0);设置第0层纹理不使用文理坐标;
D #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX2)
表示自定义点格式中包含两组纹理坐标;
23, 有关雾化说法正确的是:多选
A 通过设置渲染状态D3DRS_FOGENABLE 激活雾化处理;
B 雾化分顶点雾化和像素雾化;
C 线性雾化需设置雾密度,雾化起始距离和雾化终止距离;
D 雾化分:呈线性增加和呈指数增加;
24, 下列说法有误的是:
A SetRenderState(D3DRS_FILMODE,D3DFILL_POINT);
设置多边形填充模式为点渲染模式;
B 多边形填充模式包括:渲染点,渲染线,渲染面;
C 着色渲染分FLAT和 GOURAUD 渲染;
D 着色渲染默认为 FLAT 渲染;
25, 下列说法正确的有:多选
A Alpha 测试,不能实现半透明;
B Alpha 测试在速度上优于Alpha 混合;
C SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATER);设置Alpha混合的混合函数;
D Alpha 混合可以生成半透明效果;
E Alpha 测试中通过测试则绘制像素,否则不绘制;
26, 下列说法正确的是:多选
A 矩阵乘和向量乘前者满足交换率;即:A*B 等于 B*A;
B 向量有方向和大小;
C 模长为1的向量为单位向量;
D 对任意矩阵A 乘以 单位矩阵 B 有 A*B 等于 A;
27, 下列说法正确的是:多选
A 向量 A 与向量 B 的叉积为零,表示 A 垂直于B;
B 向量 A 与向量 B 的点积为零,表示 A 平行于B;
C 矩阵 A 除以矩阵 B 等于 A 乘以 B 的逆;
D 矩阵的加减运算是对应元素相加减;
28, 列矩阵中表示绕x 轴旋转的是:
A B
C D
29, 下列函数中哪一个是求逆矩阵:
A D3DXMatrixMultiply(); B D3DXMatrixInverse();
C D3DXMatrixRotationAxis(); D D3DXMatrixTranslation();
30, 列函数中哪一个是求向量叉积:
A D3DXVec3Cross(); B D3DXVec3Length();
C D3DXVec3Lerp(); D D3DXVec3Dot();
31, 下列说法错误的是:
A 用四元数处理旋转时比单纯用矩阵快;
B 四元数 Q=COSθ+ A * Sinθ;表示绕 A 轴旋转θ角;
C 若想用四元数Q旋转点P 运算 (QP)/Q 即可;
D 用矩阵式处理旋转有可能出现错误,但四元数不会出现错误;
32, 选出实现球面线性内插的函数是哪一个:
A D3DXQuaternionInverse(); B D3DXQuaternionRotationMatrix();
C D3DXQuaternionSlerp(); D D3DXMatrixRotationQuaternion();
33, 下列说法错误的是:
A 广告牌技术使应用此技术的2维网格始终朝向相机;
B 法线映射技术,使低多边形网格看上去像高多边形网格一样;
C 桢动画技术通过给定起点和终点,自动生成中间画面;
D 层动画中子层的运动会影响到父层;
34, 有关皮肤说法错误的是:
A 使用皮肤技术,可以防止关节和关节之间脱离;
B 使用单一网格比使用单一网格 + 加重值效果好;
C 每个定点最多可受四个加重值影响;
D 矩形调色板中的矩阵个数不超过256个; |