《2022年《DirectX程序设计》复习资料.docx》由会员分享,可在线阅读,更多相关《2022年《DirectX程序设计》复习资料.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DirectX程序设计复习资料DirectX程序设计课程期末复习资料第一章3D游戏开发的数学基础本章包含的全部知识点:点和向量直线与平面矩阵与坐标变换坐标系章节重点:矩阵和坐标变换第二章Windows编程基础本章包含的全部知识点:基本概念介绍Windows程序结构Win32程序开发实例第三章DirectX快速入门本章包含的全部知识点:DirectX概述Direct3D底层结构概述DirectX90的配置和安装章节重点:DirectX90的配置和安装第四章DirectX程序框架本章包含的全部知识点:Win32+C+Direct3D的基础框架DXUT框架章节重点:Win32+C+Direct3D的
2、基础框架第五章文本显示本章包含的全部知识点:文本绘制流程Win32程序框架实现DXUT程序框架实现章节重点:Win32程序框架实现第六章基本图片在页面最后形的绘制本章包含的全部知识点:图片在页面最后元灵活顶点格式(FVF)使用顶点缓存绘制图片在页面最后形索引缓存颜色表示法渲染状态绘制准备D3DX几何物体实例设计与实现章节重点:顶点缓存索引缓存第七章变换本章包含的全部知识点:摄像机顶点变换光栅化实例章节重点:顶点变换第八章3D数学基础补充本章包含的全部知识点:常见坐标系向量矩阵线性变换章节重点:线性变换第九章光照和材质本章包含的全部知识点:真实感图片在页面最后形基本概念Direct3D中的光照D
3、irect3D中的材质光照和材质例子章节重点:Direct3D中的光照Direct3D中的材质第十章纹理映射本章包含的全部知识点:纹理贴图片在页面最后纹理坐标纹理寻址模式纹理过滤纹理混合状态纹理实例解析章节重点:纹理寻址模式纹理过滤第十一章深度测试和反走样本章包含的全部知识点:深度缓存与深度测试图片在页面最后形反走样深度测试实例章节重点:深度缓存与深度测试第十二章网格(一)本章包含的全部知识点:ID3DXMesh子集和属性缓存绘制邻接信息优化属性表创建一个Mesh例子章节重点:子集和属性缓存创建一个Mesh第十三章网格(二)本章包含的全部知识点:X文件格式解析读取X文件渐进网格渐进网格例子章节
4、重点:深度缓存与深度测试第十四章混合和模板本章包含的全部知识点:混合因子混合计算Alpha来源Alpha混合实例模板章节重点:Alpha混合实例第十五章着色器入门本章包含的全部知识点:着色器概述HLSL的变量HLSL的函数HLSL基本语法在Direct3D中使用HLSL章节重点:Alpha混合实例第十六章顶点着色器本章包含的全部知识点:顶点着色器概述顶点声明使用顶点着色器顶点着色器实例第十七章像素着色器本章包含的全部知识点:像素着色器概述使用像素着色器HLSL采样器对象多重纹理例子程序一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1D3DPRESENT_PARAMETE
5、RS参数很多,关于其中参数之一windowed的理解正确的是(ABD)A.取值FALSE则渲染全屏B.取值TRUE则渲染窗口C.int类型D.BOOL类型E.double类型考核知识点:D3DPRESENT_PARAMETERS2以下属于Direct3D定义的图片在页面最后元类型的有(ABCD)A.点列表B.线段条带C.三角形列表D.三角形条带E.四边形列表考核知识点:图片在页面最后元3以下属于Direct3D提供的着色模式的是(AB)A.平面着色模式B.高洛德法着色模式C.渐变着色模式D.单颜色着色模式考核知识点:着色模式4下面属于Direct3D提供的创建旋转矩阵的函数的是(ABC)A.D
6、3DXMatrixRotarionXB.D3DXMatrixRotarionYC.D3DXMatrixRotarionZD.D3DXMatrixRotXE.D3DXMatrixRotY考核知识点:变换5以下属于Direct3D提供的简化纹理过滤的过程的是(ABCD)A.最近点采样B.线性过滤C.各向异性过滤D.mipmap过滤考核知识点:纹理过滤6D3DPRESENT_PARAMETERS参数很多,下面理解正确的是(ABCD)A.Windowed取值FALSE则渲染全屏B.BackBufferCount表示后备缓冲的数目C.SwapEffect表示交换缓冲类型D.BackBufferForma
7、t表示后备缓冲的格式考核知识点:D3DPRESENT_PARAMETERS7以下属于Direct3D中提供的标准光源的是(ABC)A.点光源B.方向光源C.聚焦光源D.多点光源考核知识点:光源8关于灵活顶点格式下列说法正确的是(ABD)A.D3DFVF_DIFFUSE表示顶点数据中包含的是漫反射颜色值;B.D3DFVF_SPECULAR表示顶点数据中包含的是镜面反射下的颜色值C.D3DFVF_XYZRHW表示顶点数据中包含的是未经过坐标变换的顶点坐标D.D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标考核知识点:灵活顶点格式解析:C项应该是经过坐标变换后的顶点坐标9关于顶点Alpha描
8、述正确的是(AB)A.如果在程序中直接指定每个顶点的颜色,直接给出每个顶点颜色的Alpha值.B.渲染对象中每个像素的Alpha值由该对象的Alpha值和着色模式决定.C.高洛德着色模式,所有像素的Alpha值都等于该多边形的第一个顶点的Alpha值.D.平面着色模式,每个多边形上的像素的Alpha值由它的各个顶点的Alpha值进行线性插值得到.考核知识点:顶点Alpha解析:C项应该是平面着色模式,所有像素的Alpha值都等于该多边形的第一个顶点的Alpha值.D项应该是高洛德着色模式,每个多边形上的像素的Alpha值由它的各个顶点的Alpha值进行线性插值得到.(二)、判断部分1Direc
9、t3D将给每个采样器对象连接一个唯一的纹理阶段(stage),在应用程序中找出与采样器对象相关联的阶段,并设置相应的纹理和采样器状态给该阶段.(正确)考核知识点:纹理2一个Direct3D对象只能创建一个Direct3D设备对象.(错误)考核知识点:Direct3D设备对象考核知识点解释一个Direct3D对象可以创建多个Direct3D设备对象.3由于Direct3D设备对象是由Direct3D对象创建的,因此应先释放Direct3D设备对象.(正确)考核知识点:Direct3D对象及设备对象4D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,不能与D3DFVF_XYZRHW同时使用
10、.(正确)考核知识点:灵活顶点格式5D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,可以与D3DFVF_XYZRHW同时使用.(错误)考核知识点:灵活顶点格式考核知识点解释D3DFVF_XYZ顶点数据中包含未经坐标变换的顶点坐标,不可以与D3DFVF_XYZRHW同时使用.6D3DFVF_XYZRHW顶点数据中包含经过坐标变换的顶点坐标,不能与D3DFVF_XYZ和D3DFVF_NORMAL同时使用.(正确)考核知识点:灵活顶点格式7Direct3D创建的场景和对象都是由简单的“图片在页面最后元”按照一定的方式排列组合而成的,Direct3D中的所有图片在页面最后元都是一维或二维对象
11、,包括单个的点和直线及复杂的多边形.(正确)考核知识点:图片在页面最后元8在索引缓存中定位顶点也就是在顶点缓存中定位顶点.(正确)考核知识点:顶点缓存索引缓存二、主观部分:(一)、填空部分1)像素着色器的输入仅有颜色和纹理坐标两种语义.考核知识点:像素着色器2)像素着色器的工作是在顶点着色器之后,后者的输出将为前者提供输入.考核知识点:像素着色器3)D3DFVF_DIFFUSE表示顶点数据中包含的是漫反射颜色值;考核知识点:灵活顶点格式4)D3DFVF_SPECULAR表示顶点数据中包含的是镜面反射下的颜色值;考核知识点:灵活顶点格式5)D3DFVF_XYZRHW表示顶点数据中包含的是经过坐标
12、变换的顶点坐标考核知识点:灵活顶点格式6)Direct3DCreate9函数创建一个Direct3D对象并获得指向Direct3D对象接口的指针,且参数必须设置为D3D_SDK_VERSION.考核知识点:Direct3D对象7)DXUT(TheDirectXUtilityLibrary)是建立在Direct3D9和Direct3D10上的一个程序框架,其目标是建立一个强大而容易使用的Direct3D游戏开发框架,它简化了Win32和Direct3DAPI的使用.考核知识点:DXUT8)创建DirectX设备对象的函数为CreateDevice.考核知识点:设备对象9)Direct3D图片在页
13、面最后形程序通过调用IDirect3DDevice9:SetRenderState( )函数来设置渲染状态.考核知识点:设置渲染状态10)g_pd3dDevice-SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT),这行代码完成的功能是(设置着色模式为平面着色模式).考核知识点:设置着色模式11)g_pd3dDevice-SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD),这行代码完成的功能是(设置着色模式为高洛德着色模式).考核知识点:设置着色模式(二)、名词解释1请你给出创建顶点声明,并获得IDirect
14、3DVertexDeclaration9接口指针的方法.考核知识点:顶点声明考核知识点解释HRESULTIDirect3DDevice9:CreateVertexDeclaration(CONSTD3DVERTEXELEMENT9*pVertexElements,/要创建的顶点声明IDirect3DVertexDeclaration9*ppDecl/返回创建的IDirect3DVertexDeclaration9接/口指针);2请你给出环境光(ambientlight)的概念,并说明如何设置渲染状态为整个场景添加环境光.考核知识点:环境光考核知识点解释环境光(ambientlight)由光源发
15、出经环境多次散射而无法确定其方向的光,即好像是来自四面八方的光;室内成分大,室外成分少,没有位置或方向上的特征,只有颜色亮度值,不会衰减;通过设置渲染状态为整个场景添加环境光:g_device-SetRenderState(D3DRS_AMBIENT,D3DCOLOR_X#);考核知识点:镜面反射光考核知识点解释3请你给出镜面反射光的概念,并说明如何设置渲染状态.镜面光来自特定方向并被反射到特定方向;在默认状态下,Direct3D不对物体进行镜面反射计算,需设置相关的渲染状态:g_device-SetRenderState(D3DRS_SPECULARENABLE,TRUE);如果需要进行漫反
16、射或镜面反射运算,那么在顶点缓冲器中必须包含顶点的法向量信息;4请给出设置像素着色器的函数原型及调用示例代码.考核知识点:像素着色器考核知识点解释HRESULTIDirect3DDevice9:SetPixelShader(IDirect3DPixelShader9*pShader);这个方法只接受一个参数,通过它传递一个我们要使用的指向像素着色器的指针.示例代码如下:Device-SetPixelShader(MultiTexPS);5销毁像素着色器接口函数原型考核知识点:像素着色器考核知识点解释d3d:Release(MultiTexPS);6在Direct3D的一个场景中,最多可设置几个
17、光源,设置函数形式.考核知识点:光源考核知识点解释最多可设置8个光源HRESULTSetLight(DWORDIndex,CONSTD3DLight9*pLight);7光照程序一般步骤.考核知识点:光照考核知识点解释(1)创建光源、设置其位置及相关属性;SetLight函数将光源设置到渲染管道流水线中;LightEnable函数激活光源;(2)SetRenderState打开渲染管道流水线的光照开关;(3)创建材质,设置物体的材质属性,SetMaterial设定材质;8请给出点列表图片在页面最后元的含义,并说明其应用.考核知识点:图片在页面最后元考核知识点解释点列表是一个对每点独立进行渲染的
18、顶点集合.程序可以在3D场景中使用它模拟星空视野,或作为多边形表面的点化线.9请给出线段列表图片在页面最后元的含义,并说明其应用.考核知识点:图片在页面最后元考核知识点解释线段列表是一系列的独立线段,用于为3D场景加入冰雹或大雨等效果,线段列表中顶点的数量必须是大于等于2的偶数.10请给出线段条带图片在页面最后元的含义,并说明其应用.考核知识点:图片在页面最后元考核知识点解释线段条带是一个由相互链接的线段组合成的造型,程序可以用它产生不封闭的多边形;11请给出三角形列表图片在页面最后元的含义,并说明其应用.考核知识点:图片在页面最后元考核知识点解释三角形列表是一系列独立的三角形,它们之间可能靠
19、的很近,也可能不是,顶点总数必须能被3整除;使用三角形列表建立一个由离散面片组成的物体;如建立力场墙的一种方法是指定一个由互相不相连的小三角形组成的大型列表;然后将一个可以发散光线的材质和纹理应用到这个三角形列表上12请给出三角形条带图片在页面最后元的含义,并说明其应用.考核知识点:图片在页面最后元考核知识点解释三角形条带是一连串相邻接的三角形.3D场景中大部分物体都是由三角条带组成的.13请给出三角形扇图片在页面最后元的含义,并说明其应用.考核知识点:图片在页面最后元考核知识点解释三角形扇和三角形条带类似,但其所有三角形共享一个顶点.3D场景中曲面的描述.14请给出Direct3D中设置渲染
20、状态的函数原型,并解释其参数含义.考核知识点:渲染状态考核知识点解释Direct3D图片在页面最后形程序通过调用IDirect3DDevice9:SetRenderState( )函数来设置渲染状态.枚举类型D3DRENDERSTATETYPE列举出所有可能的渲染状态;使用SetRenderState( )设置:HRESULTIDirect3DDevice9:SetRenderState(D3DRENDERSTATETYPEState,/更改的渲染状态DWORDValue);/新的状态值15请你解释平面着色模式的含义.考核知识点:着色模式考核知识点解释Direct3D绘制流水线使用多边形第一个
21、顶点的材质颜色作为整个多边形的颜色来渲染该多边形;如果多边形不共面,被平面着色方式渲染的三维物体在多边形之间将具有可视的清晰边缘;平面着色是最快的着色方式.16请你解释高洛德着模式的含义.考核知识点:着色模式考核知识点解释它使用顶点法线和光照参数为每个顶点计算颜色,然后穿越多边形的表面进行插值,插值以线性方式完成,高洛德着色使物体的表面看上去弯曲而平滑.17可编程管线渲染一个球体的步骤.考核知识点:着色模式考核知识点解释1)找到用于渲染该球体的VertexShader和PixelShader;2)将参数传递给VertexShader,VertexShader的输出再传递给PixelShader
22、;3)绘制该球体;18请说明怎样对多级渐进纹理过滤器进行设置,并具体解释Filter的取值.考核知识点:多级渐进纹理过滤考核知识点解释Device-SetSamplerState(0,D3DSAMP_MIPFILTER,Filter);D3DTEXF_NONE:禁用多级渐进纹理过滤;D3DTEXF_POINT:就会只使用与图片在页面最后元大小最匹配的一级纹理;D3DTEXF_LINEAR:Direct3D就将与图片在页面最后元大小最匹配的两级纹理以线性方式混合.19请你给出物体表面材质的定义方式,并解释每个参数的概念.考核知识点:材质考核知识点解释typedefstrcutD3DMATERIA
23、L9D3DCOLORVALUEDiffuse;/慢射光的反射属性D3DCOLORVALUEAmbient;/环境光的反射属性D3DCOLORVALUESpecular;/镜面光的反射属性D3DCOLORVALUEEmissive;/自发光的反射属性floatPower;/镜面光的高光强度D3DMATERIAL9,*LPD3DMATERIAL9;(三)、简答1着色器代码编译后,获得一个IDirect3DVertexShader9接口的指针,它代表一个顶点着色器,具体方法,及其调用过程.考核知识点:着色器考核知识点解释HRESULTIDirect3DDevice9:CreateVertexShad
24、er(constDWORD*pFunction,IDirect3DVertexShader9*ppShader);其中,输入参数pFunction指向编译成功的着色器代码段,输出参数ppShader指向最终生成的顶点着色器.假设变量shader是一个包含已编译的着色器代码的ID3DXBuffer指针,如果要获得一个IDirect3DVertexShader9接口,可以这样写:IDirect3DVertexShader9*NewShader=0;hr=Device-CreateVertexShader(DWORD*)shader-GetBufferPointer( ),&NewShader);2
25、如何测定像素着色器的支持.考核知识点:像素着色器考核知识点解释可用对SetDeviceCaps的调用来测定像素着色器的支持.Caps结构包括一个叫做PixelShaderVersion的DWORD成员,其值对主版本号和子版本号进行编码,解释这个值的含义的最佳方法是用D3DPS_VERSION宏:D3DCAPS8Caps;M_pD3D-GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&Caps);If(Caps.PixelShaderVersion=D3DPS_VERSION(1,1)3请给出D3DPRESENT_PARAMETERS的定义,并解释
26、BackBufferFormat,SwapEffect,Windowed三个参数的含义.考核知识点:D3DPRESENT_PARAMETERS考核知识点解释typedefstruct_D3DPRESENT_PARAMETERS_UINTBackBufferWidth;UINTBackBufferHeight;高度D3DFORMATBackBufferFormat;UINTBackBufferCount;/后备缓冲的格式/后备缓冲的数目/全屏幕式后备缓冲的宽度/全屏幕式后备缓冲的If(Failed(EasyCreateWindowed(m_hWnd,D3DDEVTYPE_HAL,D3DCREAT
27、E_HARDWARE_VERTEXPROCESSING)ReturnFALSE;D3DMULTISAMPLE_TYPEMultiSampleType;/全屏抗锯齿类型DWORDMultiSampleQuality;D3DSWAPEFFECTSwapEffect;/全屏抗锯齿质量等级/交换缓冲类型HWNDhDeviceWindow;BOOLWindowed;/全屏或窗口/激活深度缓冲BOOLEnableAutoDepthStencil;D3DFORMATAutoDepthStencilFormat;DWORDFlags;/深度缓冲格式UINTFullScreen_RefreshRateInHz;
28、UINTPresentationInterval;D3DPRESENT_PARAMETERS;/显示器刷新率/图片在页面最后像最大刷新速度BackBufferFormat后备缓冲的格式,DX9只支持16位和32位的后备缓冲格式,如D3DFMT_R5G6B5表示后备缓冲的格式为每个像素16位,红色5位、绿色6位、蓝色5位,也可设置为D3DFMT_UNKNOWN,这时使用桌面的格式.SwapEffect交换缓冲支持的效果类型,它是D3DSWAPEFFECT枚举类型,此处设定为D3DSWAPEFFECT_DISCARD,即后备缓存的内容被复制到屏幕上后,后备缓存的内容失效,可以丢弃.Windowed
29、如果为FALSE,表示渲染全屏,若为TRUE,则渲染窗口.4基于win32基本框架,绘制文本的函数原型及调用.考核知识点:绘制文本考核知识点解释在Render函数中通过DrawText函数控制文本显示,该函数是LPD3DXFONT类的成员函数,其函数原型如下:INTDrawText(LPD3DXSPRITEpSprite,LPctstrpString,INTCount,LPRECTpRect,DWORDFormat,D3DCOLORColor);此处的调用为:g_pFont-DrawText(NULL,strText,-1,&clientRect,DT_SINGLELINE|DT_NOCLIP
30、|DT_CENTER|DT_VCENTER,0xffffffff);5顶点缓存中的顶点可以包含顶点坐标、颜色、法线方向、纹理坐标等属性,具体包含哪些属性,可以使用灵活顶点格式(FlexibleVertexFormat,FVF)进行描述;请解释下面部分FVF描述符:D3DFVF_DIFFUSE,D3DFVF_NORMAL,D3DFVF_XYZ,D3DFVF_XYZRHW,D3DFVF_SPECULAR.考核知识点:灵活顶点格式考核知识点解释D3DFVF_DIFFUSE:顶点数据中包含漫反射颜色值;D3DFVF_NORMAL:顶点数据中包含法线向量,不能和D3DFVF_XYZRHW同时使用;D3D
31、FVF_XYZ:顶点数据中包含未经坐标变换的顶点坐标,不能与D3DFVF_XYZRHW同时使用;D3DFVF_XYZRHW:顶点数据中包含经过坐标变换的顶点坐标,不能与D3DFVF_XYZ和D3DFVF_NORMAL同时使用;D3DFVF_PSIZE:顶点信息指明绘制点的大小;D3DFVF_SPECULAR:顶点数据中镜面反射效果下的颜色值;考核知识点:顶点缓存考核知识点解释创建顶点缓存的函数IDirect3DDevice9:CreateVertexBuffer( )声明如下:HRESULTIDirect3DDevice9:CreateVertexBuffer(UINTLength,/分配给缓
32、存的字节大小;DWORDUsage,DWORDFVF,/指定关于怎样使用缓存的额外信息;6请给出创建顶点缓存的函数原型,并解释其参数含义./存储在缓存中的灵活顶点格式;D3DPOOLPool,/缓存放置在哪一个内存池中;IDirect3DVertexBuffer9*ppVertexBuffer,/返回创建好的顶点缓存的指针;HANDLE*pSharedHandle);/没有使用;设置为0;7访问顶点缓存数据时需要对其访问区域加锁,请给出加锁函数原型并解释其参数含义.考核知识点:顶点缓存访问考核知识点解释HRESULTIDirect3DVertexBuffer9:Lock(UINTOffsetT
33、oLock,/偏移量,以字节为单位,从缓存开始位置到锁定开始位置的距离UINTSizeToLock,/锁定的字节数BYTE*ppbDate,/返回的指向锁定内存开始位置的指针DWORDFlags);/标记描述如何锁定内存考核知识点:索引缓存考核知识点解释创建索引缓存的函数如下:8请给出创建索引缓存的函数原型,并解释其参数含义.HRESULTIDirect3DDevice9:CreateIndexBuffer(UINTLength,/分配给缓存的字节大小;/指定关于怎样使用缓存的额外信息;DWORDUsage,D3DFORMATFormat,/指定索引大小,使用D3DFMT_INDEX16为16
34、位索/D3DFMT_INDEX32为32位索引,但并非所有设备都支持引,32位索引针HANDLE*pSharedHandle);D3DPOOLPool,IDirect3DIndexBuffer9*ppIndexBuffer,/返回创建好的索引缓存的指9请给出使用带有索引缓存的模型绘制的函数原型,并解释其参数含义.考核知识点:索引缓存考核知识点解释使用函数IDirect3DDevice9:DrawIndexedPrimitive绘制带索引模型:点UINTPrimitiveCount);/绘制图片在页面最后元总数HRESULTIDirect3DDevice9:DrawIndexedPrimitiv
35、e(D3DPRIMITIVETYPEType,/要绘制的图片在页面最后元类型INTBaseVertexIndex,UINTMinIndex,/为索引增加一个基数,用顶点数目度量/允许被引用的最小索引值/本次调用中将被引用的顶点总数UINTNumVertices,UINTStartIndex,/索引缓存中的某个位置,表示开始渲染的开始索引10创建一个ID3DXMesh对象,然后从X文件中读取集合信息数据填入到这个对象中.请给出读取函数的定义,及相关参数的含义.考核知识点:ID3DXMesh对象考核知识点解释HRESULTD3DXLoadMeshFromX(LPCSTRpFilename,/X文件
36、名DWORDOptions,/创建标志LPDIRECT3DDEVICE9pDevice,/与创建Mesh有关的设备LPD3DXBUFFER*ppAdjacency,/返回包含DWORD的ID3DXBuffer类型/的指针,描述Mesh的邻接信息/返回包含D3DXMATERIAL结构的数组LPD3DXBUFFER*ppMaterials,/的ID3DXBuffer指针,存储了Mesh的材质数据/返回一个包含LPD3DXBUFFER*ppEffectInstances,D3DXEFFECTINSTANCE结/构的数组的ID3DXBuffer类型指针PDWORDpNumMaterials,/返回Me
37、sh的材质数LPD3DXMESH*ppMesh/返回填充了X文件几何信息的ID3DXMesh对象);(五)、程序题1下面是Alpha纹理实例程序片段,请将程序补充完整.考核知识点:Alpha纹理示例程序及答案HRESULTInitializeD3D(HWNDhWnd)/省略部分代码g_pd3dDevice-SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);/启用Alpha混合g_pd3dDevice-SetRenderState(D3DRS_ALPHABLENDENABLE,true);/设置源混合因子g_pd3dDevice-SetRenderState
38、(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);/设置目标混合因子g_pd3dDevice-SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAOP,D
39、3DTOP_MODULATE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);/设置纹理过滤方式g_pd3dDevice-SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_POINT);/省略部分代码2下面是移动线框正方体的程序片段,完成设置观察矩阵及投影矩阵的片段,请将程序补充完整.考核知识点:变换示例程序及答案/Positiona
40、ndaimthecamera.D3DXVECTOR3position(0.0f,0.0f,-50f);D3DXVECTOR3target(0.0f,0.0f,0.0f);D3DXVECTOR3up(0.0f,10f,0.0f);D3DXMATRIXV;D3DXMatrixLookAtLH(&V,&position,&target,&up);Device-SetTransform(D3DTS_VIEW,&V);/Settheprojectionmatrix.D3DXMATRIXproj;D3DXMatrixPerspectiveFovLH(&proj,D3DX_PI*0.5f,(float)Wi
41、dth/(float)Height,10f,1000.0f);Device-SetTransform(D3DTS_PROJECTION,&proj);3下面是模拟箱子挡住茶壶,进行深度测试的程序片段,请将程序补充完整.考核知识点:深度测试示例程序及答案boolSetup( )/此处省略部分代码/设置TextureFilterStates.Device-SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);Device-SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);Device-SetSa
42、mplerState(0,D3DSAMP_MIPFILTER,D3DTEXF_LINEAR);/激活深度测试、设置深度测试函数Device-SetRenderState(D3DRS_ZENABLE,TRUE);Device-SetRenderState(D3DRS_ZFUNC,D3DCMP_LESS);/此处省略部分代码LRESULTWINAPIMsgProc(HWNDhWnd,UINTmsg,WPARAMwParam,LPARAMlParam)switch(msg)caseWM_KEYUP:switch(wParam)/此处省略部分代码4下面是一程序片段,实现从”Tiger.x”文件中读取M
43、esh相关信息.请将程序补充完整.考核知识点:X文件示例程序及答案HRESULTInitGeometry( )returnDefWindowProc(hWnd,msg,wParam,lParam);caseVK_ESCAPE:break;Cleanup( );PostQuitMessage(0);case49:/开启深度测试g_pd3dDevice-SetRenderState(D3DRS_ZENABLE,TRUE);break;case50:/关闭深度测试break;g_pd3dDevice-SetRenderState(D3DRS_ZENABLE,FALSE);break;LPD3DXBU
44、FFERpD3DXMtrlBuffer;if(FAILED(D3DXLoadMeshFromX(Tiger.x,D3DXMESH_SYSTEMMEM,g_pd3dDevice,NULL,&pD3DXMtrlBuffer,if(FAILED(D3DXLoadMeshFromX(.Tiger.x,D3DXMESH_SYSTEMMEM,g_pd3dDevice,NULL,&pD3DXMtrlBuffer,NULL,&g_dwNumMaterials,&g_pMesh)MessageBox(NULL,Couldnotfindtiger.x,Meshes.exe,MB_OK);returnE_FAIL;
45、D3DXMATERIAL*d3dxMaterials=(D3DXMATERIAL*)pD3DXMtrlBuffer-GetBufferPointer( );g_pMeshMaterials=newD3DMATERIAL9g_dwNumMaterials;if(g_pMeshMaterials=NULL)returnE_OUTOFMEMORY;g_pMeshTextures=newLPDIRECT3DTEXTURE9g_dwNumMaterials;NULL,&g_dwNumMaterials,&g_pMesh)if(g_pMeshTextures=NULL)returnE_OUTOFMEMORY;for(DWORDi=0;i0)if(FAI