D3D9 Samples(8)--SimpleSample

 

 

 

D3D9 Samples(8)--SimpleSample

 

 

 

        打开SimpleSample项目。编译后运行,界面如下:

 

 

        这个例子展示了一个简单的DXUT框架运用,后面的例子大都是在这个基础之上。相比上一个sample,增加了以下内容:

 

 

1. GUI相关接口

 

CDXUTDialogResourceManager g_DialogResourceManager;// manager for shared resources of dialogs

用于管理GUI所需的资源,主要包括字体Font、贴图Texture

 

CDXUTDialog                g_HUD;                 // dialog for standard controls

DXUT Sample的标准对话框,即右上角包含三个按钮的区域。几乎每个使用DXUTsample都有这个对话框。第一个按钮是切换全屏和窗口模式;第二个按钮是切换REFHAL设备;第三个按钮用以调出下面的设备配置对话框。

 

CD3DSettingsDlg            g_SettingsDlg;         // Device settings dialog

设备配置对话框,可在此修改D3D的各种设备配置。如下图所示:

 

 

CDXUTDialog                g_SampleUI;            // dialog for sample specific controls

给用户添加控件的对话框,本sample中未添加任何控件。

 

这几个对象以及控件均在InitApp中完成初始化。并在D3DDevice状态变化时调用相对应的响应函数,如OnD3D9CreateDeviceOnD3D9ResetDeviceOnD3D9LostDeviceOnD3D9DestroyDevice。在MsgProc中传入并处理需要的窗口消息(如键盘、鼠标输入等)。绘制每帧时,调用dlgOnRender进行绘制。GUI的事件控制逻辑在OnGUIEvent中。

 

 

2. 模型查看摄像机

 

CModelViewerCamera         g_Camera;              // A model viewing camera

Camera接口由DXUT提供,使用了ArcBall球路径算法,用于查看模型。

OnD3D9CreateDevice中初始化摄像机参数:eye位置和look at位置。

OnD3D9ResetDevice中设置投影参数以及窗口大小参数。

OnFrameMove中实现摄像机的运动逻辑:FrameMove

MsgProc中接收窗口消息(如键盘、鼠标输入等):HandleMessages

 

 

3. 左上角信息显示的文本相关接口

 

ID3DXFont*                  g_pFont9 =NULL;

g_pFont9是字体资源,在OnD3D9CreateDevice中创建。

 

ID3DXSprite*               g_pSprite9 =NULL;

g_pSprite9是精灵资源,在OnD3D9ResetDevice中创建。

 

CDXUTTextHelper*           g_pTxtHelper =NULL;

将上面两个资源传给g_pTxtHelper,它封装了文字的绘制。

 

 

4. 管理实现Shader的Effect相关接口

ID3DXEffect*               g_pEffect9 =NULL;

EffectD3D提供的一套简化Shader开发的接口,方便的管理渲染状态。在OnD3D9CreateDevice中通过D3DXCreateEffectFromFile加载.fx文件得到该接口。并得到下面三个句柄用于读写Shader中的全局变量:

D3DXHANDLE                 g_hmWorldViewProjection;

D3DXHANDLE                 g_hmWorld;

D3DXHANDLE                 g_hfTime;

ID3DXEffect同样提供了OnResetDeviceOnLostDevice来响应Device状态的变化。在渲染一帧OnD3D9FrameRender时通过ID3DXEffect::SetMatrixID3DXEffect::SetFloatShader全局变量设置指定的值。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值