Rise的自留地

记录生活中的点滴,分享编程技术和游戏开发经验。

0%

DXUT统计函数

函数
描述

DXUTGetFPS
获取当前每秒提交的帧数

DXUTGetFrameStats
获取一个指向字符串的指针,该字符串包括每秒帧数、分辨率、后台缓冲区格式、深度缓冲区格式。

DXUTGetDeviceStats
获取一个指向字符串的指针,该字符串包括当前设备类型、顶点运算行为和设备名。

管理DXUT框架的函数

函数
描述

DXUTResetFrameworkState
将框架状态重置为初始默认状态,之前设置的框架状态改变将失效。

DXUTShutdown
触发程序终止和清空框架

DXUTGetExitCode
获取框架的退出代码

DXUTResetFrameworkState

Resets DXUT state to its initial default state. All previous DXUT state changes are lost.

下面列出允许改变DXUT行为和获取内部变量的函数,这些函数在使用DXUT框架的Direct3D程序中是非常实用的。

管理窗口的DXUT函数

函数
描述

DXUT框架与错误处理

Direct3D API的设计使程序能比较容易地处理各种错误,尽管大多数Direct3D API函数返回HTRSULT值,但只有一部分函数返回设备错误,如D3DERR_DEVICELOST或D3DERR_DRIVERINTERNALERROR。但是通常的Direct3D应用程序使用多种API函数,当传递的参数不合要求时,将返回D3DERR_INVALIDCALL。

(2)帧事件

框架也提供了帧事件,它在渲染过程中的每一帧被调用,应用程序应该注册并实现这些回调函数,如下表所示:

应用程序回调函数
注册回调函数
框架调用时机
场景渲染

在窗口和设备创建好之后,应用程序需要使用消息循环处理窗口消息、更新和渲染场景、处理设备事件。应用程序可以实现自己的消息循环,也可以使用DXUT消息循环,注册相应的回调函数,可以让DXUT处理设备、帧消息事件。

创建一个设备

通常可以用标准的Direct3D方法CreateDevice()创建一个Direct3D设备,这个方法需要一个有效的显示适配器、设备类型(硬件抽象层设备或参考设备)、窗口句柄、运行标志(软件/硬件顶点运算模式和其他驱动标志)和提交参数。更重要的是,结构体D3DPRESENT_PARAMETERS有许多成员指定了后台缓冲区的设置、多重采样设置、交换效果、窗口模式、深度缓冲区设置、刷新频率、提交间隔和提交标志等。

初始化DXUT

使用DXUT框架之前,首先需要初始化DXUT,初始化DXUT可以通过函数DXUTInit()完成:

Initializes DXUT.

1
2
3
4
5
6
HRESULT DXUTInit(
  BOOL bParseCommandLine,
  BOOL bShowMsgBoxOnError,
  WCHAR * strExtraCommandLineParams,
  bool bThreadSafeDXUT
);
Parameters

bParseCommandLine

DXUT框架用来帮助程序员花更少的时间来解决下列问题:创建窗口、创建Direct3D设备、进行消息循环和处理设备事件。在DXUT框架基础上编写代码,可以快速高效地进行Direct3D程序设计,大多数Direct3D SDK示例程序使用了DXUT框架。