考点归纳gogoda的专栏Word文件下载.docx

上传人:b****3 文档编号:15899162 上传时间:2022-11-16 格式:DOCX 页数:13 大小:24.05KB
下载 相关 举报
考点归纳gogoda的专栏Word文件下载.docx_第1页
第1页 / 共13页
考点归纳gogoda的专栏Word文件下载.docx_第2页
第2页 / 共13页
考点归纳gogoda的专栏Word文件下载.docx_第3页
第3页 / 共13页
考点归纳gogoda的专栏Word文件下载.docx_第4页
第4页 / 共13页
考点归纳gogoda的专栏Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

考点归纳gogoda的专栏Word文件下载.docx

《考点归纳gogoda的专栏Word文件下载.docx》由会员分享,可在线阅读,更多相关《考点归纳gogoda的专栏Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

考点归纳gogoda的专栏Word文件下载.docx

5向量和矩阵的计算操作

6简化图像文件的加载和纹理的创建

7绘制简单的形状、精灵和立方体贴图(cubemap)。

DirectX8提供的新的功能:

1、蒙皮网格(skinnedmesh)

2、多分辨率的细节级别(Level-Of-Detail,LOD)几何体

3、.X文件的高阶表面数据(higher-ordersurfacedata)支持

4、N-patches(可以在图形卡的帮助下提高模型的精度,即传入一个低精度多边形模型数据,完成镶嵌操作(加入更多的多边形))

DirectX8.0支持的shader:

顶点shader标准vs_1_1和像素shader标准ps_1_1DirectX8.1支持的shader:

像素shader标准ps_1_2、ps_1_3、ps_1_4DirectX9支持的shader:

像素shader标准ps_2_0、ps_2_x、ps_2_a、ps_3_0DirectX9引入了:

HLSL(High-LevelShaderLanguage)

剪裁测试(scissortest)

行抗锯齿(lineanti-aliasing)

球形映射texgen

双面模板(two-sidedstencil),允许给封闭几何体添加阴影体(shadowvolume)

多重渲染目标(multiplerendertarget)的渲染能力(G-buffer)

多重元素纹理(multi-elementtexture)

位移贴图(displacementmap)

24位颜色精度支持

根据监视器gamma支持来改变gamma值

片断颜色(fragmentcolor)-剪裁测试-alpha测试

第02章HAL和COM概述

HAL(HardwareAbstractionLayer,硬件抽象层)

HAL和COM技术使Direct3D能在不同硬件上发挥最快速度的同时,具有一个通用的接口和向后兼容的能力:

1具备一致的API才有生存力

2若硬件不支持Direct3D所要求的一些特性,应有一种相对低效的机制来保证程序能继续运行

3接口的变革应尽可能降低程序员学习新接口难度

所有使用早期DirectX版本开发的游戏都保证能在将来的DirectX版本下运行

游戏根据HAL所提供的特性来开启或关闭相应的特征,过程如下:

1游戏检查HAL的能力;

2游戏适当地开启或关闭某些特征;

3若某些特征被关闭,便会以一种低效的方法来实现,可能是模拟某个特征。

这通常会导致图像质量降低。

Dircet3D使用HAL通过DDI(DeviceDriverInterface,设备驱动接口)来访问图形硬件。

要检查DDI的版本,可运行DirectXDiagnosticTool(DirectX诊断工具)

HAL支持硬件加速的光栅化、硬/软件顶点处理。

HAL有4种不同的顶点处理方法:

SWVP(软件顶点处理D3DCREATE_SOFTWARE_VERTEXPROCESSING)

MixedVP(混合顶点处理D3DCREATE_MIXED_VERTEXPROCESSING)

HWVP(硬件顶点处理D3DCREATE_HARDWARE_VERTEXPROCESSING)

PureVP(纯顶点处理D3DCREATE_PURE_DEVICE)

注册一个插件式软件设备的函数是:

IDirect3D9:

RegisterSoftwareDeviceCOM的优点:

1、COM接口永远不会改变(永远无法通过任何方式修改);

2、COM是独立于语言的(language-independent);

3、只能访问一个COM组件的方法,而不是它的数据。

COM是一种基于二进制(binary-based)的编程模型

使用顶点着色器的步骤

1.编写和编译顶点着色器

2.创建一个IDircet3DVertexShader接口来代表基于编译过后的着色器代码的着色器

3.用IDirect3DDevice9:

SetVertextShader方法开启这个顶点着色器

第03章编程约定

为了编译DirectX程序,必须导入下列程序库:

1、d3dx9.lib2、d3dxof.lib3、d3d9.lib4、winmm.lib5、dxguid.lib

注意点:

1、Direct3D运行时COM对象和DLL必须由Windows注册和加载。

DirectX安装程序会为你做这件事;

2、必须在Windows项目中包含先前提及的库,才能正确链接到所调用的包装方法;

3、必须在源文件和IDE的包含路径条目表格中都包含正确的头文件。

LPDIRECT3D9:

IDirect3D9接口指针

Direct3DCreate9():

创建一个IDirect3D9的COM对象,并从中获取一个接口指针

命名约定中的前缀和类型:

P19OutputDebugString()函数是一个调试辅助函数,可以在程序运行期间将调试信息输出到IDE的调试窗口中。

DirectX9.0SDK提供的宏SUCCEEDED()和FAILED()可以简化检查返回码的工作。

并不是所有方法都会在成功后返回S_OK,所以不要试图将HRESULT与S_OK进行比较判断。

若没有什么需要做的,一个函数可能会返回S_FALSE来表示它什么都没做。

第04章3D基础、Gouraud着色、纹理映射基础

在默认情况下,Direct3D引擎使用左手坐标系。

x:

宽度,y:

高度,z:

深度

创建一个顶点结构,包含位置、漫反射、法线、顶点坐标信息:

typedefStruct

{

D3DVECTOR3vPosition;

//位置

DWORDdwDidiffuse;

//漫反射

D3DVECTOR3vNormal;

//法线

FLOATu,v;

//纹理坐标

}MYVERTEX;

创建一个顶点结构,包含位置、纹理、法线信息:

typedefStructVertex

D3DVECTOR3vTexture;

//纹理

描述一个物体的朝向需要至少4个向量(LOOK、UP、RIGHT、POSITION):

LOOK:

定义了物体所指的方向;

若要飞机横滚(roll),则需将其绕着LOOK向量旋转

UP:

表示那个方向对于物体来说是"

上"

或"

下"

若要改变飞机所面对的方向(yaw:

航向、偏航),则需将其绕着UP向量旋转

RIGHT:

定义物体右侧指向;

若要改变飞机的俯仰度(pitch),则需将其绕着RIGHT向量旋转

POSITION:

定义物体的位置;

要使物体沿着LOOK向量方向移动,则需改变POSITION向量。

任何3D物体都是由面构成。

所有模型和3D世界都可被分解为:

点、线和三角形。

一个由若干三角形构成的物体称为:

网格(mesh)。

注意:

Direct3D会剔除背面。

这种背面剔除(BackfaceCulling)特性可删除所有背对着观看者或照相机的三角形,即那些在默认情况下按逆时针次序的顶点构成的三角形。

平均而言,在任何特定时刻,游戏世界中的一半三角形是背对着照相机的,因此利用该特性有助于缩短渲染时间。

根据要渲染的对象不同,有时可以用D3DCULL_NONE标志来关闭背面剔除。

为了进行背面剔除,需要计算一个三角形两条边的夹积,夹积结果是一个平面(由三角形的那两条边构成)垂直的向量,该向量就是平面的面法线,它的方向决定了这个三角形是面朝照相机的还是背向照相机的。

多边形:

指至少由3个顶点定义的n边封闭形状。

最简单的多边形就是三角形。

法线是垂直于面的向量,可用于定义一个面的朝向或可见侧。

顶点法线垂直于一个面,并且位于顶点之上,具有一个单位的长度,顶点法线被用于Gouraud着色。

面法线垂直于面,并且位于面的中央。

面法线经常被用于Flat着色。

着色是进行光照计算并根据计算结果确定像素颜色的过程。

这些像素颜色稍后将用于在屏幕上表示物体(更专业地说,着色是光栅器对像素进行上色的方法)。

Flat着色是对每一个面进行着色,也就意味着将使用位于三角形中央的面法线来计算光照。

Gouraud着色用顶点法线计算,效果更光滑,这是因为顶点法线的方向随着顶点的不同而不同。

Gouraud着色是Direct3D中的默认模式。

纹理坐标空间中,u表示水平方向,v表示垂直方向。

一个典型的顶点结构,由位置向量、RHW(ReciprocalofHomogeneousW,齐次W的倒数)、纹理的tu、tv坐标组成。

StructVertex

FLOATx,y,z,rhw;

//2D顶点坐标

FLOATtu,tv;

}

第05章基础

CD3DApplicationConfirmDevice()方法是最先被执行的,它用于检查显卡的能力。

以下代码的作用?

答:

用于检查显卡是否支持1.1版的顶点shader。

HRESULTCMyD3DApplication:

ConfirmDevice

D3DCAPS9*pCaps,//

DWORDdwBehavior,//

D3DFORMATadapterFormat,//

D3DFORMATbackBufferFormat//同显示的像素格式

//检查硬件是否支持顶点shaderIf((dwBehavior&

D3DCREATE_HARDWARE_VERTEXPROCESSING)||(dwBehavior&

D3DCREATE_MIXED_VERTEXPROCESSING))

//如果不支持,则采用软件顶点shaderIf(pCaps-VertexShaderVersionD3DVS_VERSION(1,1))

returnE_FAIL;

//一个错误返回值

returnS_OK;

//返回OK状态

调用顺序:

1、ConfirmDevice()

2、OneTimeSceneInit()一次性永久初始化,完成任何一次性的资源分配

3、InitDeviceObjects()

4、RestoreDeviceObjects()

在应用程序运行期间,会循环执行以下函数:

FrameMove()用于容纳所有动画相关的代码,包括更新矩阵、纹理坐标、对象坐标以及其他一些根据时间而变化的行为。

Render()作为3D渲染的入口点在渲染每一帧时被调用

以上2个函数时每个框架应用程序的主循环。

FinalCleanup()用于销毁为几何数据分配的内存、删除文件对象等。

用户改变窗口大小时,框架将会调用:

InvalidateDeviceObjects():

当游戏关闭、或用户改变窗口大小、或改变设备,都将调用它。

RestoreDeviceObjects()重新创建InvalidateDeviceObject

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

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

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