| 
 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个;  |