D3D9 Samples(7)--EmptyProject




D3D9Samples(7)--EmptyProject

 

 

 

        打开Emptyproject,编译后运行,界面如下:

 

 

       这个例子是DXUT框架的最基础的使用。DXUT是微软提供的一个对D3D9/D3D10 API封装的框架(Framework)。为了简化繁杂的API的使用,让开发者的注意力集中在关键技术点上。当然,随着D3D 11的推出,新的DXUT11框架取代了DXUT。

 

进入WinMain函数,可以看到对DXUT的使用很简单,大致三步:

 

1. 设置回调函数

 

DXUTSetCallbackD3D9DeviceAcceptable

设置LPDXUTCALLBACKISD3D9DEVICEACCEPTABLE回调,在创建D3D9设备之前响应此回调,用以检查此设备是否满足需要,即显卡性能是否能满足程序的需要。

 

DXUTSetCallbackD3D9DeviceCreated

设置LPDXUTCALLBACKD3D9DEVICECREATED回调,在创建D3D9设备之后响应此回调,用以创建内存池为D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM的各种类型的D3D资源;以及创建其他非资源类D3D对象,如创建shader、effect等。

 

DXUTSetCallbackD3D9DeviceReset

设置LPDXUTCALLBACKD3D9DEVICERESET回调,在重置D3D9设备之后响应此回调,用以创建内存池为D3DPOOL_DEFAULT的D3D资源。

 

DXUTSetCallbackD3D9FrameRender

设置LPDXUTCALLBACKD3D9FRAMERENDER回调,在D3D9渲染一帧写入BackBuffer时,显示该buffer内容之前回调。在此可以进行各种资源的绘制工作。

 

DXUTSetCallbackD3D9DeviceLost

设置LPDXUTCALLBACKD3D9DEVICELOST回调调,在D3D9设备丢失时回调,所有在LPDXUTCALLBACKD3D9DEVICERESET中创建的内存池为D3DPOOL_DEFAULT的资源对象在这里都要释放掉。

 

DXUTSetCallbackD3D9DeviceDestroyed

设置LPDXUTCALLBACKD3D9DEVICEDESTROYED回调,在销毁D3D9设备时回调,在这里要释放掉在LPDXUTCALLBACKD3D9DEVICECREATED中创建的内存池为D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM的资源对象。

 

DXUTSetCallbackDeviceChanging

设置LPDXUTCALLBACKMODIFYDEVICESETTINGS回调,在创建D3D设备之前响应此回调。DXUT11已经为创建D3D设备而准备了默认设置,在此可以改变设置。

 

DXUTSetCallbackMsgProc

设置LPDXUTCALLBACKMSGPROC回调,在收到Windows窗口消息时回调,在此可截取各种WM_*消息,并进行处理。

 

DXUTSetCallbackFrameMove

设置LPDXUTCALLBACKFRAMEMOVE回调,在渲染每一帧画面之前回调,在此可以对数据进行更新。比如计算物体运动等。

 

 

2. 初始化DXUT

 

DXUTInit

这个函数主要是解析命令行参数,告诉DXUT是否要弹出错误框(如果出错),以及是否要线程安全(设置和读取一个值时保证多线程下安全)。WinMain中也可以不用这个函数,DXUT会自行调用,并使用默认参数。默认是显示错误框,线程不安全的。

 

DXUTSetHotkeyHandling

是否启用Alt+Enter触发全屏切换

是否启用Esc触发退出程序。

是否启用暂停触发时钟暂停。

 

DXUTSetCursorSettings

在全屏下是否显示光标,是否剪裁光标(当光标只有一部分在视角内时)

 

DXUTCreateWindow

创建窗口

 

DXUTCreateDevice

创建Direct3D设备

 

 

3. 开始DXUT主循环

 

DXUTMainLoop

在主循环中取窗口消息,如果没收到WM_QUIT退出消息,就一直在主循环中,在空闲时间(idle time)进行D3D的绘制。

 

 

4. 退出时返回DXUT提供的错误代码

 

DXUTGetExitCode

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值