DirectX程序设计复习资料史广顺打印_第1页
DirectX程序设计复习资料史广顺打印_第2页
DirectX程序设计复习资料史广顺打印_第3页
DirectX程序设计复习资料史广顺打印_第4页
DirectX程序设计复习资料史广顺打印_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程名称DirectX程序设计一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1、 (A)是图形中最基本的几何对象。A.点B.线C.向量D.三角形2、 (B)可以用来判断向量叉乘值的方向。A左手定则 B右手定则C左手坐标系 D右手坐标系3、 三维物体变为二维图形的变换称为(ABC)。A. 平行投影B.旋转变换C.投影变换D.缩放变换4、 (C)是用于定义构成物体的三角形单元列表的坐标系。A世界坐标系 B本地坐标系C观察坐标系 D屏幕坐标系5、 (D)是HAL设备的变体,只支持硬件顶点处理。A. 纯软件模式B.在不同设备上的混合顶点处理模式C.在同一设备上的混合顶点处理模式

2、D.纯硬件模式6、 (C)是应用程序第一个创建而最后一个释放的对象。ADirect3D设备对象 BCOM组件对象CDirect3D对象 D类工厂对象7、 7、(D)是Win32编程的基础。A. 消息机制B.窗口过程C.消息机制或窗口过程D.消息机制和窗口过程8、 以下哪个释放顺序是正确的(B)。A.Direct3D对象、Direct3D设备对象B.Direct3D设备对象、Direct3D对象C.顺序任意 D.无需释放9、 Win32程序中利用(C)进行消息的捕获和处理.A. 循环函数B.递归函数C.回调函数D.静态函数10、 (A)对象是用来指定字体属性的。A. ALPD3DXFONT BL

3、PDIRECT3D9CLPDIRECT3DDEVICE9 DRECT11、 DXUT框架将与文本渲染相关的属性和接口都封装在(D)类中。A. ID3DXFont B.ID3DXSprite C.DIRECT3DDEVICE9 D.CDXUTTextHelper12、 3D世界中最基本的图形是(D)。A. 点 B.线 C.向量 D.三角形 13、 (C)是一个由相互连接的线段组合成的造型,程序可用它产生不封闭的多边形。A. 点列表 B.线段列表 C.线段条带 D.三角形列表14、 Direct3D中使用的是(A)。A. 左手坐标系 B.右手坐标系 C.两个都可以 D.两个都不是15、 灵活顶点格

4、式是描述顶点的(B)属性。A. 顶点坐标 B.顶点数据相关属性 C.法线方向 D.纹理坐标16、 (A)缓存方式通常被放置在显存中,其中的数据能被有效地处理。A. 静态缓存 B.动态缓存 C.两种都可以 D.两种都不可以17、 (A)是最快的着色方式。A. 平面着色 B. 高洛德着色 C. 两种方式都很快 D. 两种方式都很慢18、 (D)是将物体顶点坐标从模型自己的坐标系空间转换到世界坐标系空间。A. 局部变换 B. 空间变换 C. 投影变换 D. 世界变换19、 (B)变换后的的几何体位于观察坐标系中。A. 局部变换 B. 取景变换 C. 世界变换 D. 空间变换20、 (B)是由光源发出

5、经多次散射而无法确定其方向的光。A. 漫反射光 B. 环境反射光 C. 镜面发射光 D. 自发光21、 (A)光垂直于物体时比倾斜时更明亮。A. 漫反射光 B. 环境反射光 C. 镜面发射光 D. 自发光22、 (C)光源的发光区域是一个圆锥体。A. 点光源 B. 方向光源 C. 聚焦光源 D. 混合光源23、 "对于所有纹理上的每一个纹理像素,Direct3D需要有一个统一的地址范围,是在(A)之间"A. 0.01.0 B. 0.02.0 C. 1.02.0 D. 0.03.024、 采用(A)时,复制与这个浮点值地址最接近的整数地址的纹理元素的颜色A. 最近点采样 B.

6、 线性过滤 C. 各向异性过滤 D. mipmap过滤25、 (B)是Direct3D用来存储绘制到屏幕上的每个像素点深度信息的一块内存缓冲区A. 广度缓存 B. 深度缓存 C. 深度测试 D. 广度测试26、 如要绘制子集0中的所有三角形,代码如何(C) A. Mesh->DrawSubset() B. Mesh->DrawSubset(1) C. Mesh->DrawSubset(0) D. Mesh->DrawSubset27、 如果要对Mesh进行优化,需要知道Mesh的三角形的邻接信息情况,这些信息存储在(D)中A. 邻接矩阵 B. 邻接缓存 C. 深度缓存

7、D. 邻接数组28、 除了进行几何信息的排序外,还将创建一个 属性表,该表是(A)A. 数组 B. 缓存 C. 序列 D. 线性表29、 已经指定了定点数和面数,同时也分配了适当大小的内存给顶点缓存、索引缓存以及属性缓存等,只是没有填入相应的数据称为(B)A. 一级Mesh B. 空Mesh C. 初试Mesh D. Mesh初始化30、 在3DMAX等3D建模工具中创建好模型,模型转换为扩展名为.x的文件,称(C)A. .X文件 B. 3d文件 C. X文件 D. 3dMax文件31、 cube.x文件内容解释:“xof”标识这是(A)A. X文件 B. DirectX版本 C. 模板 D.

8、 浮点数32、 模板限制中,表示(A)A. 开放的 B. 闭合的 C. 受限的 D. 半开放的33、 (D)可以动态地有针对地将某些像素写入后台缓存A. 深度缓存 B. 深度测试 C. Alpha测试 D. 模板缓存34、 利用模板缓存来阻止对后台缓存村长哦功能某些特定区域进行绘制,判定是否将某个像素写入后台缓存的决策过程称为(A)A. 模板测试 B. 深度缓存 C. 深度测试 D. Alpha测试35、 替换顶点处理的部分叫做(C)A. 像素着色器 B. 着色器 C. 顶点着色器 D. 可编程着色器36、 (A)的功能是对进入管线的每一个像素点进行着色处理A. 像素着色器 B. 着色器 C.

9、 顶点着色器 D. 可编程着色器37、 DirectX9中发布了高级着色器语言,是(B)A. GLSL B. HLSL C. Cg D. C+38、 (B)是一个在图形卡的GPU上执行的程序,可对顶点进行操作;包括顶点坐标转换和光照处理A. 像素着色器 B. 可编程着色器 C. 着色器 D. 顶点着色器39、 (A)对像素操作,运行于渲染管线的光栅化处理阶段,辅助实现诸如纹理混合、光照模型计算或环境映射等效果A. 像素着色器 B. 可编程着色器 C. 着色器 D. 顶点着色器40、 DirectX主要由(A)和(C)所构成。A. 硬件抽象层 B. 软件抽象层 C. 硬件模拟层 D. 软件模拟层

10、41、 HAL的顶点处理模式包括(ABD)。A. 软件顶点处理 B. 硬件顶点处理 C. 在不同设备上的混合顶点处理 D. 在同一设备上的混合顶点处理42、 可以存储RGB数据的结构包括(ABCD)。A. DWORD B. D3DCOLOR C. D3DCOLORVALUE D. D3DXCOLOR43、 Direct3D支持哪些多边形填充模式。ABCA. 点模式 B. 线框模式 C. 实体模式 D. 混合模式44、 哪些变换分别用于设定物体在世界坐标系中的位置、方向以及模型大小。ACDA. 平移变换 B. 投影变换 C. 旋转变换 D. 缩放变换45、 投影变换包括哪几种投影方式。(BC)A

11、. 平面投影 B. 透视投影 C. 正射投影 D. 缩放投影46、 Direct3D中哪些光是分别独立地用于系统的光照计算的。(ABC)A.漫反射光 B.环境反射光 C.镜面发射光 D.自发光47、 常见的纹理寻址模式有(ABCD)A. 重叠纹理寻址模式 B. 镜像纹理寻址模式 C. 钳位纹理寻址模式 D. 边界颜色纹理寻址模式48、 Direct3D提供了哪些(ABCD)方法来简化纹理过滤的过程A. 最近点采样B. 线性过滤 C. 各向异性过滤 D. mipmap过滤49、 模板定义包含哪些项(ABCD)A. "模板名字 B. GUID C. 数据项 D. 用于控制模板的限制程度&

12、quot;50、 渲染管线首先要设定哪些数据信息(ABC)A. 顶点B. 图元C. 纹理 D. 材质(二)、判断部分1、 V直线与平面的夹角小于等于90°。2、 V观察体的大小依赖于窗口的大小。3、 X裁剪操作时,两个平面必须在投影参考点的不同侧。4、 X DirectX是Windows的一种多媒体API,但是不能保证设备无关性。5、 V Direct3DHAL仅实现与设备相关的代码并且不做任何模拟。6、 V Direct3DAPI对象与GDI并排存在,且各自有操作硬件的硬件抽象层。7、 X Direct3D开发和部署的基本环境是DXUT的编程环境。8、 V 一个Direct3D对象

13、可以创建多个Direct3D设备对象。9、 X 在DirectX对窗口进行渲染之前,无需先对窗口进行渲染方面的配置。10、 V DXUT框架只支持Direct3D设备和窗口的一一对应。11、 X 绘制文本无需在渲染循环函数中执行。12、 V 创建字体对象时应获得当前渲染区域的信息。13、 X 创建的字体对象不是占用内存的资源对象,因此无需释放。14、 V 图元是Direct3D中定义的基本图形表示,是组成一个单一实体的一组点和线的集合。15、 V 三角形条带的顶点顺序必须是按照顺时针画的。16、 V 使用索引缓存时,必须将要绘制的模型的索引缓存与设备相关联且每次只能使用一个索引缓存。17、 X

14、裁剪操作是在拍摄过程中的第四步按动快门拍摄时进行的。18、 X光栅化过程是通过硬件和软件混合图形处理来完成的。19、 X建模是指用一定的数学和物理方法建立所需3D场景的几何描述。20、 X在场景中,设置光源后即可,无需再对光源进行激活。21、 V物体表面的颜色不仅与照射光源的属性有关,还与物体的材质属性相关。22、 V对于图元在二维屏幕上图像的每个像素来说,都必须从纹理中获得一个颜色值,这个过程称为纹理过滤23、 X当三维物体表面与投影平面不平行时,它在屏幕上的投影会扭曲,这种现象称为mipmap过滤24、 V纹理阶段混合状态用于指定当前纹理颜色值和Alpha值的混合方法25、 V通常情况下,

15、深度缓存对应与屏幕大小相同的一块二维区域26、 X设置深度缓存是指设置深度测试成功时对深度缓存如何操作27、 V图形学中称由于采样频率不足而造成的失真为走样,反走样通过多重采样改善图形锯齿效果28、 X渲染后的物体看起来像是由许许多多的三角形、四边形或五边形组成的,就像网一样,我们称为网状结构29、 V若要从缓存中读取数据,需要锁定缓存,用完后解锁30、 V三角形属性ID存储在Mesh的属性缓存中,由于每个三角形都对应一项属性缓存,所以属性缓存中的项目数等于Mesh中的三角形的个数31、 V使用OptimizeInplace()进行网格优化后,Mesh的几何信息将按照属性进行排序,这样各个子集

16、的顶点/索引将组成连续的块32、 V使用SetAttributeTable()方法来直接设置属性表33、 X文件是由模版驱动的,模版定义了如何存储一个数据对象34、 V模板限制指在存储数据对象时,是否可以增加其他数据类型的数据,在模板定义中结束部分的标识35、 V有材质和纹理的X文件中,还需定义材质模板、颜色模板、纹理文件名模板、纹理坐标模板等36、 X这种随着人们视线的远近而对模型绘制的多边形数目进行动态调整的技术被称为层次网格37、 V "混合定义是将两个或两个以上的图像叠合在一起构成一幅新图像的方法"38、 V "是用源像素颜色与目标像素颜色通过一种规则进行

17、计算,计算的结果为该像素的最终颜色,这个过程就是混合"39、 V Alpha分量主要是用来指定像素的透明等级40、 X Alpha混合是渲染状态的一种,不启用Alpha混合也能进行相关计算41、 V 如果没有使用材质和问题,当前绘制像素的Alpha分量来自每个顶点颜色设置的Alpha值42、 X平面着色模式,所有像素的Alpha值都大于等于该多边形的第一个顶点的Alpha值43、 V像素的Alpha值就是纹理Alpha混合之后的值44、 V Alpha测试并不把当前像素的颜色与颜色缓冲中像素的颜色混合,像素要么完全不透明,要么完全透明45、 V模板测试成功或者失败,模板中的值都会有相

18、应的更新操作46、 V可编程管线允许用户自定义一段可以在GPU上执行的程序47、 V顶点和像素由GPU来执行,是固定功能管线的一部分48、 X顶点着色器与像素着色器不允许成对出现49、 V一个采样对象包含一个纹理对象以及对该纹理进行采样所需要的一些状态50、 X "向量型的成员可以单独被访问,矩阵型不可以"(三)填空题1、用于定义构成物体的三角形单元列表的坐标系叫做 本地坐标系(局部坐标系或模型坐标系) 。2、Direct3D的着色模式中, 平面着色模式 在绘制流水线使用多边形第一个顶点的材质颜色作为整个多边形的颜色来渲染该多边形;如果多边形不共面,被平面着色方式渲染的三维

19、物体在多边形之间将具有可视的清晰边缘;3、 世界变换 是将物体顶点坐标从模型自己的坐标系空间转换到世界坐标系空间;4、Direct3D的着色模式中,高洛德着色模式 使用顶点法线和光照参数为每个顶点计算颜色,然后穿越多边形的表面进行插值,插值以线性方式完成;它会使物体的表面看上去弯曲而平滑;5、局部坐标系(local space)或 建模坐标系(modeling space) ,是用于定义构成物体的三角形单元列表的坐标系。6、创建的字体对象也是一种占用内存的资源对象,也要遵循“最先申请,最后释放”的准则适时释放它。7、DirectX中的3维坐标系遵循的是 左 手法则。8、两种基本的投影方式为 平

20、行投影 和 透视投影 。9、DirectX主要由 硬件抽象层(HAL) 和 硬件模拟层(HEL) 所构成。10、Direct3D是通过(COM)组件对象模型对象和接口实现的,C+应用程序可以直接访问这些接口和对象。11、通常,图元是多边形(polygon),最简单的多边形是 三角形 。12、Direct3D定义了六种基本图元类型:点列表(D3DPT_POINTLIST),线段列表(D3DPT_LINELIST),线段条带(D3DPT_LINESTRIP),三角形列表(D3DPT_TRIANGLELIST),三角形条带(D3D_TRIANGLESTRIP),三角形扇(D3DPT_TRIANGLE

21、FAN)。13、Direct3D的填充模式中,会有点模式(D3DFILL_POINT),线框模式(D3DFILL_WIREFRAME),面模式(D3DFILL_SOLID)模式。14、 纹理 是指定区域像素颜色计算的过程;纹理过滤的4种类型分别是最近点采样、线性过滤、 各向异性过滤 、 mipmap过滤 。15、设P1(X1,Y1),P2(X2,Y2)为空间中的两个点,那么距离P1P2= 。16、透视投影方式中,将投影平面置于观察点与投影对象之间,透视投影的投影线互不平行,会聚于一点,此点为观察点,也称投影中心。17、图元(primitive)是Direct3D中定义的基本图形表示,它是组成一

22、个单一实体的一组顶点;最简单的图元是三维坐标系中多个点的集合,称为 点列表(point list)。18、三维物体变为二维图形的变换称为 投影变换 。19、视口变换(viewport transform)的任务是将顶点坐标从投影窗口转换到屏幕的一个矩 形区域中, 该矩形区域称为视口。20、Shader Model(着色器模型)是微软公司定义图形平台性能的一个标准,着色器是渲染像素和顶点的小程序,分为顶点着色器(Vertex Shader)和像素着色器(Pixel Shader)。21、假设平面和的法线向量分别为和,则两平面的夹角为 。22、观察坐标系中是将 摄像机的坐标 作为原点,X轴向右,Z

23、轴向前,Y轴向上。(四)程序题1、在绘制字体实例中,初始化Direct3D的函数如下,请将空白处补充完整: HRESULT InitializeD3D( HWND hWnd)/创建Direct3D对象,该对象用来创建Direct3D设备对象if (NULL = (g_pD3D = Direct3DCreate9(D3D_SDK_VERSION ) )return false;/设置D3DPRESENT_PARAMETERS结构,准备创建Direct3D设备对象D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp,sizeof(d3dpp);d3dp

24、p.Windowed = TRUE;d3dpp.S = D3DS;d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;/创建Direct3D设备对象if (FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pd3dDevice)return FALSE; /创建字体对象if (FAILED(D3DXCreateFont(g_pd3dDevice,0,0,0,0,0,0,0

25、,0,0,L"Arial",&g_pFont)return E_FAIL;/获取窗口客户区GetClientRect(hWnd,&clientRect);/设置剔除模式为不剔除任何面g_pd3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);/设置图元填充模式为线框模式g_pd3dDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME); return TRUE;2、一个绘制带有纹理贴的图立方体的例子,从里面截取绘制部分的片段,请将空白

26、处补充完整:LPDIRECT3D9g_pD3D = NULL; /Direct3D对象LPDIRECT3DDEVICE9g_pd3dDevice = NULL; /Direct3D设备对象LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;/顶点缓存对象VOID Render()/清空后台缓存g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);/开始在后台缓存绘制图形if (SUCCEEDED(g_pd3dDevice->BeginScene()SetTexture()

27、;/设置纹理g_pd3dDevice->SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX);g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);/结束在后台缓存渲染图形g_pd3dDevice->EndScene();/将在后台缓存绘制的图形提交到前台缓存显示g_pd3dDevice->Present( NULL,NULL,NULL,NULL );3、基于Win32框架的Direct3D

28、程序的基本结构图如下,请补充完整:其中,程序主体的函数框架如下,请根据渲染函数流程将代码补充完整:INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT ) / Register the window class WNDCLASSEX wc = sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle( NULL ), NULL, NULL, NULL, NULL, L"D3D Tutorial", NULL;/注册窗口类 wc Re

29、gisterClassEx( &wc ); / Create the application's window HWND hWnd = CreateWindow( L"D3D Tutorial", L"D3D Tutorial 01: CreateDevice", WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, NULL, NULL, wc.hInstance, NULL ); / Initialize Direct3D if( SUCCEEDED( InitD3D( hWnd ) ) ) / Show

30、the window ShowWindow( hWnd, SW_SHOWDEFAULT ); UpdateWindow( hWnd ); / Enter the message loop MSG msg; while( GetMessage( &msg, NULL, 0, 0 ) ) /Translate and dispatch Messages TranslateMessage( &msg ); DispatchMessage( &msg ); /UnRegister windowclass UnregisterClass( L"D3D Tutorial&

31、quot;, wc.hInstance ); return 0; 4、(每空3分,共12分)光源例子光源设置部分代码如下,请将空白处补充完整: /设置一号光源为漫反射方向光,颜色为白色 D3DXVECTOR3 vecDir1; D3DLIGHT9 light1; (1) ZeroMemory( &light1, sizeof(D3DLIGHT9) ); light1.Type = D3DLIGHT_DIRECTIONAL; light1.Diffuse.r = 1.0f; light1.Diffuse.g = 1.0f; light1.Diffuse.b = 1.0f; vecDir1

32、 = D3DXVECTOR3(-10, 0 , 10); /方向光方向 (2)D3DXVec3Normalize( (D3DXVECTOR3*)&light1.Direction, &vecDir1 ); g_pd3dDevice->SetLight( 0, &light1 );/二号光源为漫反射点光源,颜色为白色 D3DXVECTOR3 vecPos2; D3DLIGHT9 light2; (3) ZeroMemory( &light2, sizeof(D3DLIGHT9) ); light2.Type = D3DLIGHT_POINT; light2.

33、Diffuse.r = 1.0f; light2.Diffuse.g = 1.0f; light2.Diffuse.b = 1.0f; light2.Position= D3DXVECTOR3( 10, 0, -10); light2.Range = 100.0f; light2.Attenuation0 = 1.0f; (4) g_pd3dDevice->SetLight( 1, &light2 );DirectX程序设计课程期末复习资料一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1. D3DPRESENT_PARAMETERS参数很多,关于其中参数之

34、一windowed的理解正确的是( ABD )A.取值FALSE则渲染全屏 B.取值TRUE则渲染窗口 C. int类型 D.BOOL类型 E.double类型2. 以下属于Direct 3D定义的图元类型的有( ABCD )A.点列表 B.线段条带 C.三角形列表 D.三角形条带 E.四边形列表3. 以下属于Direct 3D提供的着色模式的是( AB )A.平面着色模式 B.高洛德法着色模式 C.渐变着色模式 D.单颜色着色模式 4. 下面属于Direct3D提供的创建旋转矩阵的函数的是( ABC )A. D3DXMatrixRotarionX B. D3DXMatrixRotarionY

35、 C. D3DXMatrixRotarionZ D. D3DXMatrixRotX E. D3DXMatrixRotY5. 以下属于Direct3D提供的简化纹理过滤的过程的是( ABCD )A.最近点采样 B.线性过滤 C.各向异性过滤 D.mipmap过滤 6. D3DPRESENT_PARAMETERS参数很多,下面理解正确的是( ABCD )A.Windowed取值FALSE则渲染全屏 B. BackBufferCount表示后备缓冲的数目C. S表示交换缓冲类型 D. BackBufferFormat表示后备缓冲的格式7. 以下属于Direct3D中提供的标准光源的是( ABC )A

36、. 点光源 B. 方向光源 C. 聚焦光源 D.多点光源 8. 关于灵活顶点格式下列说法正确的是( ABD )A. D3DFVF_DIFFUSE表示顶点数据中包含的是漫反射颜色值; B. D3DFVF_SPECULAR表示顶点数据中包含的是镜面反射下的颜色值 C. D3DFVF_XYZRHW表示顶点数据中包含的是未经过坐标变换的顶点坐标 D. D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标9. 关于顶点Alpha描述正确的是( AB )A. 如果在程序中直接指定每个顶点的颜色,直接给出每个顶点颜色的Alpha值。B. 渲染对象中每个像素的Alpha值由该对象的Alpha值和着色模式决

37、定。C. 高洛德着色模式,所有像素的Alpha值都等于该多边形的第一个顶点的Alpha值。D. 平面着色模式,每个多边形上的像素的Alpha值由它的各个顶点的Alpha值进行线性插值得到。(二)、判断部分1. Direct3D将给每个采样器对象连接一个唯一的纹理阶段(stage),在应用程序中找出与采样器对象相关联的阶段,并设置相应的纹理和采样器状态给该阶段。 ( 正确 )2. 一个Direct3D对象只能创建一个Direct3D设备对象。 ( 错误 )3. 由于Direct3D设备对象是由Direct3D对象创建的,因此应先释放Direct3D设备对象。(正确)4. D3DFVF_XYZ顶点

38、数据中包含未经坐标变换的顶点坐标,不能与D3DFVF_XYZRHW同时使用。(正确)5. D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,可以与D3DFVF_XYZRHW同时使用。(错误)6. D3DFVF_XYZRHW顶点数据中包含经过坐标变换的顶点坐标,不能与D3DFVF_XYZ和D3DFVF_NORMAL同时使用。(正确)7. Direct3D创建的场景和对象都是由简单的“图元”按照一定的方式排列组合而成的,Direct3D中的所有图元都是一维或二维对象,包括单个的点和直线及复杂的多边形。(正确)8. 在索引缓存中定位顶点也就是在顶点缓存中定位顶点。(正确)二、主观部分:(一)

39、、填空部分1) 像素着色器的输入仅有颜色和纹理坐标两种语义。2) 像素着色器的工作是在顶点着色器之后,后者的输出将为前者提供输入。 3) D3DFVF_DIFFUSE表示顶点数据中包含的是漫反射颜色值;4) D3DFVF_SPECULAR表示顶点数据中包含的是镜面反射下的颜色值;5) D3DFVF_XYZRHW表示顶点数据中包含的是经过坐标变换的顶点坐标6) Direct3DCreate9函数创建一个Direct3D对象并获得指向Direct3D对象接口的指针,且参数必须设置为D3D_SDK_VERSION。7) DXUT(The DirectX Utility Library)是建立在Dir

40、ect3D9和Direct3D10上的一个程序框架,其目标是建立一个强大而容易使用的Direct3D游戏开发框架,它简化了Win32和Direct3D API的使用。8) 创建DirectX设备对象的函数为CreateDevice。9) Direct3D图形程序通过调用IDirect3DDevice9:SetRenderState()函数来设置渲染状态。10) g_pd3dDevice->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT),这行代码完成的功能是( 设置着色模式为平面着色模式)。11) g_pd3dDevice->SetRend

41、erState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD),这行代码完成的功能是( 设置着色模式为高洛德着色模式)。(二)、名词解释1、请你给出创建顶点声明,并获得IDirect3DVertexDeclaration9接口指针的方法。HRESULT IDirect3DDevice9:CreateVertexDeclaration(CONST D3DVERTEXELEMENT9* pVertexElements, /要创建的顶点声明 IDirect3DVertexDeclaration9* ppDecl/返回创建的IDirect3DVertexDeclaration9接/

42、口指针 );2、请你给出环境光(ambient light)的概念,并说明如何设置渲染状态为整个场景添加环境光。环境光(ambient light)由光源发出经环境多次散射而无法确定其方向的光,即好像是来自四面八方的光;室内成分大,室外成分少,没有位置或方向上的特征,只有颜色亮度值,不会衰减;通过设置渲染状态为整个场景添加环境光:g_device->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_X#);3、请你给出镜面反射光的概念,并说明如何设置渲染状态。镜面光来自特定方向并被反射到特定方向;在默认状态下,Direct3D不对物体进行镜面反射计算,需设置相关

43、的渲染状态:g_device->SetRenderState(D3DRS_SPECULARENABLE,TRUE);如果需要进行漫反射或镜面反射运算,那么在顶点缓冲器中必须包含顶点的法向量信息;4、请给出设置像素着色器的函数原型及调用示例代码。HRESULT IDirect3DDevice9:SetPixelShader(IDirect3DPixelShader9* pShader );这个方法只接受一个参数,通过它传递一个我们要使用的指向像素着色器的指针。示例代码如下: Device->SetPixelShader(MultiTexPS); 5、销毁像素着色器接口函数原型d3d:

44、Release<IDirect3DPixelShader9*>(MultiTexPS);6、在Direct3D的一个场景中,最多可设置几个光源,设置函数形式。最多可设置8个光源HRESULT SetLight(DWORD Index,CONST D3DLight9 *pLight );7、光照程序一般步骤。 (1) 创建光源、设置其位置及相关属性;SetLight函数将光源设置到渲染管道流水线中;LightEnable函数激活光源;(2) SetRenderState打开渲染管道流水线的光照开关;(3) 创建材质,设置物体的材质属性,SetMaterial设定材质;8、请给出点列表

45、图元的含义,并说明其应用。点列表是一个对每点独立进行渲染的顶点集合。程序可以在3D场景中使用它模拟星空视野,或作为多边形表面的点化线。9、请给出线段列表图元的含义,并说明其应用。线段列表是一系列的独立线段,用于为3D场景加入冰雹或大雨等效果,线段列表中顶点的数量必须是大于等于2的偶数。10、请给出线段条带图元的含义,并说明其应用。线段条带是一个由相互链接的线段组合成的造型,程序可以用它产生不封闭的多边形;11、请给出三角形列表图元的含义,并说明其应用。三角形列表是一系列独立的三角形,它们之间可能靠的很近,也可能不是,顶点总数必须能被3整除;使用三角形列表建立一个由离散面片组成的物体;如建立力场

46、墙的一种方法是指定一个由互相不相连的小三角形组成的大型列表;然后将一个可以发散光线的材质和纹理应用到这个三角形列表上12、请给出三角形条带图元的含义,并说明其应用。三角形条带是一连串相邻接的三角形。3D场景中大部分物体都是由三角条带组成的。13、请给出三角形扇图元的含义,并说明其应用。三角形扇和三角形条带类似,但其所有三角形共享一个顶点。3D场景中曲面的描述。14、请给出Direct3D中设置渲染状态的函数原型,并解释其参数含义。Direct3D图形程序通过调用IDirect3DDevice9:SetRenderState()函数来设置渲染状态。枚举类型D3DRENDERSTATETYPE列举

47、出所有可能的渲染状态;使用SetRenderState()设置:HRESULT IDirect3DDevice9:SetRenderState(D3DRENDERSTATETYPE State,/更改的渲染状态DWORD Value);/新的状态值15、请你解释平面着色模式的含义。Direct3D绘制流水线使用多边形第一个顶点的材质颜色作为整个多边形的颜色来渲染该多边形;如果多边形不共面,被平面着色方式渲染的三维物体在多边形之间将具有可视的清晰边缘;平面着色是最快的着色方式。16、请你解释高洛德着模式的含义。它使用顶点法线和光照参数为每个顶点计算颜色,然后穿越多边形的表面进行插值,插值以线性方

48、式完成,高洛德着色使物体的表面看上去弯曲而平滑。17、可编程管线渲染一个球体的步骤。1)找到用于渲染该球体的VertexShader和PixelShader;2)将参数传递给VertexShader,VertexShader的输出再传递给PixelShader;3)绘制该球体;18、请说明怎样对多级渐进纹理过滤器进行设置,并具体解释Filter的取值。Device->SetSamplerState(0,D3DSAMP_MIPFILTER,Filter);D3DTEXF_NONE:禁用多级渐进纹理过滤;D3DTEXF_POINT:就会只使用与图元大小最匹配的一级纹理;D3DTEXF_LIN

49、EAR:Direct3D就将与图元大小最匹配的两级纹理以线性方式混合。19、请你给出物体表面材质的定义方式,并解释每个参数的概念。typedef strcut D3DMATERIAL9D3DCOLORVALUE Diffuse;/慢射光的反射属性D3DCOLORVALUE Ambient;/环境光的反射属性D3DCOLORVALUE Specular;/镜面光的反射属性D3DCOLORVALUE Emissive;/自发光的反射属性float Power;/镜面光的高光强度D3DMATERIAL9,*LPD3DMATERIAL9;(三)、简答1、着色器代码编译后,获得一个IDirect3DVe

50、rtexShader9接口的指针,它代表一个顶点着色器,具体方法,及其调用过程。HRESULT IDirect3DDevice9:CreateVertexShader(const DWORD* pFunction,IDirect3DVertexShader9*ppShader );其中,输入参数pFunction指向编译成功的着色器代码段,输出参数ppShader指向最终生成的顶点着色器。 假设变量shader是一个包含已编译的着色器代码的ID3DXBuffer指针,如果要获得一个IDirect3DVertexShader9接口,可以这样写: IDirect3DVertexShader9* N

51、ewShader = 0;hr=Device->CreateVertexShader( (DWORD*)shader->GetBufferPointer(),&NewShader);2、如何测定像素着色器的支持。可用对SetDeviceCaps的调用来测定像素着色器的支持。 Caps结构包括一个叫做PixelShaderVersion的DWORD成员,其值对主版本号和子版本号进行编码,解释这个值的含义的最佳方法是用D3DPS_VERSION宏: D3DCAPS8 Caps;M_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVT

52、YPE_HAL,&Caps);If(Caps.PixelShaderVersion = D3DPS_VERSION(1,1)If(Failed(EasyCreateWindowed(m_hWnd,D3DDEVTYPE_HAL,D3DCREATE_HARDWARE_VERTEXPROCESSING)Return FALSE;3、请给出D3DPRESENT_PARAMETERS的定义,并解释BackBufferFormat,S,Windowed三个参数的含义。typedef struct _D3DPRESENT_PARAMETERS_ UINT BackBufferWidth;/全屏幕式后备缓冲的宽度 UINT BackBufferHeight;/全屏幕式后备缓冲的高度 D3DFORMAT BackBuff

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论