DirectX的安装与D3D的初始化

下载安装

 

 

首先登陆Microsoft Download Center下载最新版本的DirectX SDK

 

 

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=3021d52b-514e-41d3-ad02-438a3ba730ba

 

 

 

 

按步骤安装

 

 

 

 

 

 

安装完成后会发现VS2008里面已经设置好相关开发库的目录。

 

 

开发D3D程序的一般步骤

 

 

 

D3D对象

 

在编写D3D程序时,D3D对象是 必须首先创建的对象。通过这个对象,可以去枚举、获取 显示设备所支持的功能。而且这个D3D对象必须最后释放。

通常情况下,我们需要定义一个指针指向所创建的 D3D对象:

 

D3D设备

 

一个D3D设备接口可以简单的认为是本机一块显卡的抽象,它包含了显卡所有的硬件参数及状态值,比如 说,显卡显存的数量和起始的线性地址,是否支持深度缓冲(Depth Buffer),雾化(Fog),纹理(Texture) MipMap等。

通常情况下,也需要定义一个指针指向所创建的3D设备 。如:

 

  

 

在初始化3D环境之前,需要定义指向3D对象的指针和指向3D设备的指针

 

 

初始化D3D

 

在创建应用程序窗口后,我们就准备渲染3D场景。在渲染之前,我们必须创建D3D对象和3D设备,因此,可以定义一个Init3D函数,在这个函数里,我们要做的工作:

 

1.创建3D对象

2.设置present参数

3.创建3D设备

 

创建3D对象

 

一个良好的程序编制风格包含了这么一条:任何时候都应该检查函数的返回值,根据函数的返回值决定程序是否应该继续执行下去。

返回诸如:E_FAIL这样的值,而不是返回一个具体的数值,目的是为了和Direct3D系统的返回值统一。便于在Direct3D程序中都可以用SUCCEEDEDFAILED来检查函数调用是成功还是失败。

 

 

设置Present参数

 

在创建3D设备时,创建函数需要知道显示表面的相关参数和信息,所以在创建设备之前,必须设置Present参数。实际上Present参数包含了很多内容,所以在Direct3D中是用一个Present结构来表示的。

 

常见参数说明:

 

BackBufferWidth, BackBufferHeight:缓冲区的宽度和高度,如果使用窗口模式,这个值可以随意;如果是全屏模式,则这个值只能是显卡指定的值。

 

BackBufferCount:缓冲区的个数,可以是0123

 

Windowed:值为TRUE,表示窗口模式,值为FALSE,表示全屏模式

 

D3DSWAPEFFECT :交换效果

D3DSWAPEFFECT_DISCARD D3DSWAPEFFECT_FLIP 

D3DSWAPEFFECT_COPY D3DSWAPEFFECT_COPY_VSYNC

 

BackBufferFormat:缓冲区的点格式,通常把它设置的和当前桌面的点格式一致。所以则需要用到另一个函数GetAdapterDisplayMode

 

 

得到当前显示模式

 

 

 

函数原型:

  

 

 

 

其中参数pMode指向一个D3DDISPLAYMODE 结构体

  

D3DFORMAT是一个枚举类型,定义了可能的点的格式。

 

创建Direct3D设备

 

创建D3D设备需要用到函数CreateDevice,其原型是:

 

参数说明:

Adapter:表示创建的3D设备使用哪块显卡,通常这个值指定为D3DADAPTER_DEFAULT ,表示使用主显示卡

 

DeviceType:表示创建什么类型的的设备,其中D3DDEVTYPE 是一个枚举类型,定义如下:

 

  

 

通常情况下,这个参数应该指定为:

  D3DDEVTYPE_HAL

hFocusWindow:指示3D设备将场景渲染后,显示的窗口。

BehaviorFlags:这个参数可以取 D3DCREATE_HARDWARE_VERTEXPROCESSING

D3DCREATE_SOFTWARE_VERTEXPROCESSING

 

设置3D设备顶点处理的类型的时候,如果可以的话,当然要选用硬件顶点处理,但是由于并非所有显卡都支持硬件顶点处理,因此我们必须首先检查显卡是否支持。我们可以可以使用如下方法 来检查显卡的能力。

 

Adapter——指定要获得哪个显示适配器的特性

DeviceType——指定设备类型(硬件设备(D3DDEVTYPE_HAL),软件设备(D3DDEVTYPE_REF))

PCaps——返回一个已初始化的D3DCAPS9结构

然后我们可以用下面的代码段来检查显卡的能力

 

*pPresentationParameters :指向 D3DPRESENT_PARAMETERS结构的指针

 ppReturnedDeviceInterface :创建的3D设备的指针

 

 

因此创建3D设备的代码段如下:

 

渲染

 

 

Clear函数:清除颜色、深度缓存、模板缓存

 

参数说明:

Count 要清除的矩形的个数

*pRect: 指向一个矩形数组的首地址,如果该值为NULL,则将整个视口清除

Flags::指定清除那个表面

 

D3DCLEAR_STENCIL,用Stencil 这个参数的值来清除模板缓存。

D3DCLEAR_TARGET,用指定的颜色清除目标表面。

D3DCLEAR_ZBUFFER,用指定的Z值清除深度缓存。

Color:指定颜色。

Z:指定深度(0.01.0)

Stencil:指定模板缓存的值

 

resent函数:展现场景

 

函数原型:

参数说明:

 *pSourceRect:要展现的源矩形表面,一般为NUILL,表示展现整个源表面

 *pDestRect:要展现的目标矩形表面,一般可以设为NULL,表示展现到整个窗口或全屏幕式下的这个屏幕

 hDestWindowOverride:要展现的目的窗口的句柄,一般为NULL,表示展现到创建Direct3D设备指定的目标窗口

 *pDirtyRegion :”脏区域”,一般设为NULL

 

善后

 

消息循环结束时,因该释放已创建的3D对象和3D设备

  

在善后时,可以象函数Cleanup那样释放对象,但更经常地做法是使用宏,在文件开头或者在头文件里定义宏:

那么Cleanup函数可以改写为:

  

 

D3D初始化具体步骤:

 

 

创建一个新Win32项目,命名为D3DApp

 

 

 

选择Windows应用程序的空项目。

 

添加必要的依赖项,添加需要的静态链接库。

 

 

 

添加一个*.cpp文件。

 

下面是初始化D3D的完整代码:

源码下载地址:http://download.csdn.net/source/2899387

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值