ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:25.53KB ,
资源ID:29517190      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29517190.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DirectX程序设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DirectX程序设计.docx

1、DirectX程序设计DirectX程序设计课程期末复习资料 第一章3D游戏开发的数学基础本章包含的全部知识点: 点和向量 直线与平面 矩阵与坐标变换 坐标系章节重点:矩阵和坐标变换第二章Windows编程基础本章包含的全部知识点: 基本概念介绍 Windows程序结构 Win32程序开发实例第3章DirectX快速入门本章包含的全部知识点: DirectX概述 Direct3D 底层结构概述 DirectX9.0的配置和安装章节重点:DirectX9.0的配置和安装第4章 DirectX程序框架本章包含的全部知识点: Win32+C+Direct3D的基础框架 DXUT框架章节重点:Win3

2、2+C+Direct3D的基础框架第5章 文本显示本章包含的全部知识点: 文本绘制流程 Win32程序框架实现 DXUT程序框架实现章节重点: Win32程序框架实现第六章 基本图形的绘制本章包含的全部知识点: 图元 灵活顶点格式(FVF) 使用顶点缓存绘制图形 索引缓存 颜色表示法 渲染状态 绘制准备 D3DX几何物体 实例设计与实现章节重点:顶点缓存索引缓存第七章 变 换本章包含的全部知识点: 摄像机 顶点变换 光栅化 实例章节重点:顶点变换第八章 3D数学基础补充本章包含的全部知识点: 常见坐标系 向量 矩阵 线性变换章节重点: 线性变换第九章 光照和材质本章包含的全部知识点: 真实感图

3、形基本概念 Direct3D中的光照 Direct3D中的材质 光照和材质例子章节重点: Direct3D中的光照Direct3D中的材质第十章 纹理映射本章包含的全部知识点: 纹理贴图 纹理坐标 纹理寻址模式 纹理过滤 纹理混合状态 纹理实例解析章节重点:纹理寻址模式纹理过滤第十一章 深度测试和反走样本章包含的全部知识点: 深度缓存与深度测试 图形反走样 深度测试实例章节重点:深度缓存与深度测试第十二章 网格(一)本章包含的全部知识点: ID3DXMesh 子集和属性缓存 绘制 邻接信息 优化 属性表 创建一个Mesh 例子章节重点:子集和属性缓存创建一个Mesh第十三章 网格(二)本章包含

4、的全部知识点: X文件格式解析 读取X文件 渐进网格 渐进网格例子章节重点:深度缓存与深度测试第十四章 混合和模板本章包含的全部知识点: 混合因子 混合计算 Alpha来源 Alpha混合实例 模板章节重点: Alpha混合实例第十五章 着色器入门本章包含的全部知识点: 着色器概述 HLSL的变量 HLSL的函数 HLSL基本语法 在Direct3D中使用HLSL章节重点: Alpha混合实例第十六章 顶点着色器本章包含的全部知识点: 顶点着色器概述 顶点声明 使用顶点着色器 顶点着色器实例第十七章 像素着色器本章包含的全部知识点: 像素着色器概述 使用像素着色器 HLSL采样器对象 多重纹理

5、 例子程序一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1. D3DPRESENT_PARAMETERS参数很多,关于其中参数之一windowed的理解正确的是( ABD )A.取值FALSE则渲染全屏 B.取值TRUE则渲染窗口 C. int类型 D.BOOL类型 E.double类型考核知识点: D3DPRESENT_PARAMETERS2. 以下属于Direct 3D定义的图元类型的有( ABCD )A.点列表 B.线段条带 C.三角形列表 D.三角形条带 E.四边形列表考核知识点: 图元3. 以下属于Direct 3D提供的着色模式的是( AB )A.平面着色模

6、式 B.高洛德法着色模式 C.渐变着色模式 D.单颜色着色模式 考核知识点: 着色模式4. 下面属于Direct3D提供的创建旋转矩阵的函数的是( ABC )A. D3DXMatrixRotarionX B. D3DXMatrixRotarionY C. D3DXMatrixRotarionZ D. D3DXMatrixRotX E. D3DXMatrixRotY考核知识点: 变换5. 以下属于Direct3D提供的简化纹理过滤的过程的是( ABCD )A.最近点采样 B.线性过滤 C.各向异性过滤 D.mipmap过滤 考核知识点: 纹理过滤6. D3DPRESENT_PARAMETERS参

7、数很多,下面理解正确的是( ABCD )A.Windowed取值FALSE则渲染全屏 B. BackBufferCount表示后备缓冲的数目C. SwapEffect表示交换缓冲类型 D. BackBufferFormat表示后备缓冲的格式考核知识点: D3DPRESENT_PARAMETERS7. 以下属于Direct3D中提供的标准光源的是( ABC )A. 点光源 B. 方向光源 C. 聚焦光源 D.多点光源 考核知识点: 光源8. 关于灵活顶点格式下列说法正确的是( ABD )A. D3DFVF_DIFFUSE表示顶点数据中包含的是漫反射颜色值; B. D3DFVF_SPECULAR表

8、示顶点数据中包含的是镜面反射下的颜色值 C. D3DFVF_XYZRHW表示顶点数据中包含的是未经过坐标变换的顶点坐标 D. D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标考核知识点: 灵活顶点格式解析:C项应该是经过坐标变换后的顶点坐标9. 关于顶点Alpha描述正确的是( AB )A. 如果在程序中直接指定每个顶点的颜色,直接给出每个顶点颜色的Alpha值。B. 渲染对象中每个像素的Alpha值由该对象的Alpha值和着色模式决定。C. 高洛德着色模式,所有像素的Alpha值都等于该多边形的第一个顶点的Alpha值。D. 平面着色模式,每个多边形上的像素的Alpha值由它的各个顶

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

10、一个Direct3D对象可以创建多个Direct3D设备对象。3. 由于Direct3D设备对象是由Direct3D对象创建的,因此应先释放Direct3D设备对象。(正确)考核知识点: Direct3D对象及设备对象4. D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,不能与D3DFVF_XYZRHW同时使用。(正确)考核知识点: 灵活顶点格式5. D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,可以与D3DFVF_XYZRHW同时使用。(错误)考核知识点: 灵活顶点格式考核知识点解释D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,不可以与D3DFVF_XYZR

11、HW同时使用。6. D3DFVF_XYZRHW顶点数据中包含经过坐标变换的顶点坐标,不能与D3DFVF_XYZ和D3DFVF_NORMAL同时使用。(正确)考核知识点: 灵活顶点格式7. Direct3D创建的场景和对象都是由简单的“图元”按照一定的方式排列组合而成的,Direct3D中的所有图元都是一维或二维对象,包括单个的点和直线及复杂的多边形。(正确)考核知识点: 图元8. 在索引缓存中定位顶点也就是在顶点缓存中定位顶点。(正确)考核知识点: 顶点缓存索引缓存二、主观部分:(一)、填空部分1) 像素着色器的输入仅有颜色和纹理坐标两种语义。考核知识点: 像素着色器2) 像素着色器的工作是在

12、顶点着色器之后,后者的输出将为前者提供输入。 考核知识点: 像素着色器3) D3DFVF_DIFFUSE表示顶点数据中包含的是漫反射颜色值;考核知识点: 灵活顶点格式4) D3DFVF_SPECULAR表示顶点数据中包含的是镜面反射下的颜色值;考核知识点: 灵活顶点格式5) D3DFVF_XYZRHW表示顶点数据中包含的是经过坐标变换的顶点坐标考核知识点: 灵活顶点格式6) Direct3DCreate9函数创建一个Direct3D对象并获得指向Direct3D对象接口的指针,且参数必须设置为D3D_SDK_VERSION。考核知识点: Direct3D对象7) DXUT(The Direct

13、X Utility Library)是建立在Direct3D9和Direct3D10上的一个程序框架,其目标是建立一个强大而容易使用的Direct3D游戏开发框架,它简化了Win32和Direct3D API的使用。考核知识点: DXUT8) 创建DirectX设备对象的函数为CreateDevice。考核知识点: 设备对象9) Direct3D图形程序通过调用IDirect3DDevice9:SetRenderState()函数来设置渲染状态。考核知识点: 设置渲染状态10) g_pd3dDevice-SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT)

14、,这行代码完成的功能是( 设置着色模式为平面着色模式)。考核知识点: 设置着色模式11) g_pd3dDevice-SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD),这行代码完成的功能是( 设置着色模式为高洛德着色模式)。考核知识点: 设置着色模式(二)、名词解释1、请你给出创建顶点声明,并获得IDirect3DVertexDeclaration9接口指针的方法。考核知识点: 顶点声明考核知识点解释HRESULT IDirect3DDevice9:CreateVertexDeclaration( CONST D3DVERTEXELEMENT9*

15、pVertexElements, /要创建的顶点声明 IDirect3DVertexDeclaration9* ppDecl /返回创建的IDirect3DVertexDeclaration9接 /口指针 );2、请你给出环境光(ambient light)的概念,并说明如何设置渲染状态为整个场景添加环境光。考核知识点: 环境光考核知识点解释环境光(ambient light) 由光源发出经环境多次散射而无法确定其方向的光,即好像是来自四面八方的光;室内成分大,室外成分少,没有位置或方向上的特征,只有颜色亮度值,不会衰减;通过设置渲染状态为整个场景添加环境光: g_device-SetRend

16、erState(D3DRS_AMBIENT,D3DCOLOR_X#);3、请你给出镜面反射光的概念,并说明如何设置渲染状态。考核知识点: 镜面反射光考核知识点解释 镜面光来自特定方向并被反射到特定方向;在默认状态下,Direct3D不对物体进行镜面反射计算,需设置相关的渲染状态: g_device-SetRenderState(D3DRS_SPECULARENABLE,TRUE); 如果需要进行漫反射或镜面反射运算,那么在顶点缓冲器中必须包含顶点的法向量信息;4、请给出设置像素着色器的函数原型及调用示例代码。考核知识点: 像素着色器考核知识点解释HRESULT IDirect3DDevice9

17、:SetPixelShader( IDirect3DPixelShader9* pShader );这个方法只接受一个参数,通过它传递一个我们要使用的指向像素着色器的指针。示例代码如下: Device-SetPixelShader(MultiTexPS); 5、销毁像素着色器接口函数原型考核知识点: 像素着色器考核知识点解释d3d:Release(MultiTexPS);6、在Direct3D的一个场景中,最多可设置几个光源,设置函数形式。考核知识点: 光源考核知识点解释最多可设置8个光源 HRESULT SetLight(DWORD Index,CONST D3DLight9 *pLight

18、 );7、光照程序一般步骤。考核知识点: 光照考核知识点解释(1) 创建光源、设置其位置及相关属性;SetLight函数将光源设置到渲染管道流水线中;LightEnable函数激活光源;(2) SetRenderState打开渲染管道流水线的光照开关;(3) 创建材质,设置物体的材质属性,SetMaterial设定材质;8、请给出点列表图元的含义,并说明其应用。考核知识点: 图元考核知识点解释点列表是一个对每点独立进行渲染的顶点集合。程序可以在3D场景中使用它模拟星空视野,或作为多边形表面的点化线。9、请给出线段列表图元的含义,并说明其应用。考核知识点: 图元考核知识点解释线段列表是一系列的独

19、立线段,用于为3D场景加入冰雹或大雨等效果,线段列表中顶点的数量必须是大于等于2的偶数。10、请给出线段条带图元的含义,并说明其应用。考核知识点: 图元考核知识点解释线段条带是一个由相互链接的线段组合成的造型,程序可以用它产生不封闭的多边形;11、请给出三角形列表图元的含义,并说明其应用。考核知识点: 图元考核知识点解释三角形列表是一系列独立的三角形,它们之间可能靠的很近,也可能不是,顶点总数必须能被3整除;使用三角形列表建立一个由离散面片组成的物体;如建立力场墙的一种方法是指定一个由互相不相连的小三角形组成的大型列表;然后将一个可以发散光线的材质和纹理应用到这个三角形列表上12、请给出三角形

20、条带图元的含义,并说明其应用。考核知识点: 图元考核知识点解释三角形条带是一连串相邻接的三角形。3D场景中大部分物体都是由三角条带组成的。13、请给出三角形扇图元的含义,并说明其应用。考核知识点: 图元考核知识点解释三角形扇和三角形条带类似,但其所有三角形共享一个顶点。3D场景中曲面的描述。14、请给出Direct3D中设置渲染状态的函数原型,并解释其参数含义。考核知识点: 渲染状态考核知识点解释Direct3D图形程序通过调用IDirect3DDevice9:SetRenderState()函数来设置渲染状态。枚举类型D3DRENDERSTATETYPE列举出所有可能的渲染状态;使用SetR

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

22、算颜色,然后穿越多边形的表面进行插值,插值以线性方式完成,高洛德着色使物体的表面看上去弯曲而平滑。17、可编程管线渲染一个球体的步骤。考核知识点: 着色模式考核知识点解释1)找到用于渲染该球体的VertexShader和PixelShader;2)将参数传递给VertexShader,VertexShader的输出再传递给PixelShader;3)绘制该球体;18、请说明怎样对多级渐进纹理过滤器进行设置,并具体解释Filter的取值。考核知识点: 多级渐进纹理过滤考核知识点解释Device-SetSamplerState(0,D3DSAMP_MIPFILTER,Filter);D3DTEXF

23、_NONE:禁用多级渐进纹理过滤;D3DTEXF_POINT:就会只使用与图元大小最匹配的一级纹理;D3DTEXF_LINEAR:Direct3D就将与图元大小最匹配的两级纹理以线性方式混合。19、请你给出物体表面材质的定义方式,并解释每个参数的概念。考核知识点: 材质考核知识点解释typedef strcut D3DMATERIAL9 D3DCOLORVALUE Diffuse; /慢射光的反射属性 D3DCOLORVALUE Ambient; /环境光的反射属性 D3DCOLORVALUE Specular; /镜面光的反射属性 D3DCOLORVALUE Emissive; /自发光的反

24、射属性 float Power; /镜面光的高光强度 D3DMATERIAL9,*LPD3DMATERIAL9;(三)、简答1、着色器代码编译后,获得一个IDirect3DVertexShader9接口的指针,它代表一个顶点着色器,具体方法,及其调用过程。 考核知识点: 着色器考核知识点解释HRESULT IDirect3DDevice9:CreateVertexShader( const DWORD* pFunction, IDirect3DVertexShader9*ppShader );其中,输入参数pFunction指向编译成功的着色器代码段,输出参数ppShader指向最终生成的顶点

25、着色器。 假设变量shader是一个包含已编译的着色器代码的ID3DXBuffer指针,如果要获得一个IDirect3DVertexShader9接口,可以这样写: IDirect3DVertexShader9* NewShader = 0;hr=Device-CreateVertexShader( (DWORD*)shader-GetBufferPointer(),&NewShader);2、如何测定像素着色器的支持。考核知识点: 像素着色器考核知识点解释可用对SetDeviceCaps的调用来测定像素着色器的支持。 Caps结构包括一个叫做PixelShaderVersion的DWORD成

26、员,其值对主版本号和子版本号进行编码,解释这个值的含义的最佳方法是用D3DPS_VERSION宏: D3DCAPS8 Caps;M_pD3D-GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&Caps);If(Caps.PixelShaderVersion = D3DPS_VERSION(1,1) If(Failed(EasyCreateWindowed(m_hWnd,D3DDEVTYPE_HAL,D3DCREATE_HAR DWARE_VERTEXPROCESSING) Return FALSE;3、请给出D3DPRESENT_PARAMETE

27、RS的定义,并解释BackBufferFormat,SwapEffect,Windowed三个参数的含义。考核知识点: D3DPRESENT_PARAMETERS考核知识点解释typedef struct _D3DPRESENT_PARAMETERS_ UINT BackBufferWidth; /全屏幕式后备缓冲的宽度 UINT BackBufferHeight; /全屏幕式后备缓冲的高度 D3DFORMAT BackBufferFormat; /后备缓冲的格式 UINT BackBufferCount; /后备缓冲的数目 D3DMULTISAMPLE_TYPE MultiSampleTyp

28、e; /全屏抗锯齿类型 DWORD MultiSampleQuality; /全屏抗锯齿质量等级 D3DSWAPEFFECT SwapEffect; /交换缓冲类型HWND hDeviceWindow; BOOL Windowed; /全屏或窗口 BOOL EnableAutoDepthStencil; /激活深度缓冲 D3DFORMAT AutoDepthStencilFormat; /深度缓冲格式 DWORD Flags; UINT FullScreen_RefreshRateInHz; /显示器刷新率 UINT PresentationInterval; /图像最大刷新速度 D3DPRE

29、SENT_PARAMETERS; BackBufferFormat后备缓冲的格式,DX9只支持16位和32位的后备缓冲格式,如D3DFMT_R5G6B5表示后备缓冲的格式为每个像素16位,红色5位、绿色6位、蓝色5位,也可设置为D3DFMT_UNKNOWN,这时使用桌面的格式。 SwapEffect交换缓冲支持的效果类型,它是D3DSWAPEFFECT枚举类型,此处设定为D3DSWAPEFFECT_DISCARD,即后备缓存的内容被复制到屏幕上后,后备缓存的内容失效,可以丢弃。 Windowed如果为FALSE,表示渲染全屏,若为TRUE,则渲染窗口。4、基于win32基本框架,绘制文本的函数

30、原型及调用。考核知识点: 绘制文本考核知识点解释在Render函数中通过DrawText函数控制文本显示,该函数是LPD3DXFONT类的成员函数,其函数原型如下: INT DrawText(LPD3DXSPRITE pSprite,LPctstr pString,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color);此处的调用为:g_pFont-DrawText(NULL, strText,-1, &clientRect, DT_SINGLELINE|DT_NOCLIP|DT_CENTER|DT_VCENTER, 0xffffffff );5、顶点缓存中的顶点可

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1