【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

12
返回列表 发新帖
楼主: 鼯鼠

DXUT设计指南

[复制链接]
 楼主| 发表于 2006-9-11 15:08:52 | 显示全部楼层

DXUT高级设备选择

本主题包括控制使用DXUT创建Direct3D设备的高级细节。

· 选择最佳的设备

· 控制设备选择对话框

选择最佳设备(Best Available Device)

DXUT使用高度灵活的方法从列表中选择最佳的设备,这个设备列表和队列系统可以独立的使用,在每帧的空闲期间(rest of the framework)调用DXUTFindValidDeviceSettings函数:

HRESULT DXUTFindValidDeviceSettings(

DXUTDeviceSettings* pOut,

DXUTDeviceSettings* pIn,

DXUTMatchOptions* pMatchOptions )

PIn参数是一个已有的DXUTDeviceSettings结构的指针。PMatchOptions参数描述保存的是哪个输入设备的设定,哪个最接近的有效设定将被匹配,当选择当前最佳的设备时哪个设定将被忽视。

举个例子,假如调用函数想有一个D3DFMT_A2B10G10R10格式的hal设备的后备缓冲区。如果系统中的hal设备不支持这个后备缓冲区格式,但reference设备已经安装,函数在reference设备和更改为与reference设备兼容的后备缓冲格式中做出选择。匹配的选择在DXUT_MATCH_TYPE列举中,让调用者控制如何选择这些模式。

每个匹配的选项(查看DXUTMatchOptions) 必须是下列类型之一:

DXUT_MATCH_TYPE 值

描述

DXUTMT_IGNORE_INPUT

为默认的设备设定使用最接近有效值的值。

DXUTMT_PRESERVE_INPUT

使用没改变的输入参数,没有找到有效的设备是可能的。

DXUTMT_CLOSEST_TO_INPUT

为输入使用最接近有效值的值。

如果pMatchOptions为NULL,那么所有匹配选项是DXUTMT_IGNORE_INPUT。如果没能找到有效的设备设定,DXUTFindValidDeviceSettings返回一个失败的代码;否则,函数返回成功的代码,有效的设备设定被写到pOut参数里。

控制设备选择对话框

你可能想完全控制DXUT设备选择对话框中列出的,选项列表中选择的项目。例如,可能是通知设备选择对话框,程序需要一个模版缓冲。

在框架的设备选择对话框中控制选项的列表,可以使用LPDXUTCALLBACKISDEVICEACCEPTABLE回调函数。将允许你去控制设备设定的哪个组合(adapter ordinal, device type, adapter format, back buffer format, and windowed)。在设备选择对话框中控制其他设定,你可以使用CD3Denumeration类的成员函数,它定义在DXUTenum.cpp文件中,公布在下面的头文件中:

(SDK root)\Samples\C++\Common\DXUTenum.h

举个例子,在对话框中控制深度缓冲区格式,你可以使用下列代码:

CGrowableArray<D3DFORMAT>* pDSList;

pDSList = DXUTGetEnumeration()->GetPossibleDepthStencilFormatList();

nIndex = pDSList->IndexOf( D3DFMT_D16 );

if( nIndex >= 0 ) pDSList->Remove( nIndex );

nIndex = pDSList->IndexOf( D3DFMT_D24X8 );

if( nIndex >= 0 ) pDSList->Remove( nIndex );

nIndex = pDSList->IndexOf( D3DFMT_D24S8 );

if( nIndex >= 0 ) pDSList->Remove( nIndex );

调用CD3Denumeratio类的函数,像这个例子代码,必须在设备创建以前使用。

 楼主| 发表于 2006-9-11 15:11:24 | 显示全部楼层
DXUT高级功能

下面可选择的函数允许你更改CXUT的行为、取得内部变量。

Function

Description

Window Management

DXUTGetHINSTANCE

取得应用程序实例的句柄。

DXUTGetHWND

取得当前设备窗口的句柄。

DXUTGetHWNDFocus

取得焦点窗口的句柄。

DXUTGetHWNDDeviceFullScreen

取得全屏模式设备窗口的句柄。

DXUTGetHWNDDeviceWindowed

取得窗口模式设备窗口的句柄。.

DXUTGetWindowClientRect

取得应用程序设备窗口的矩形客户区。

DXUTGetWindowTitle

取得应用程序窗口标题的指针。

DXUTIsWindowed

应用程序是否在窗口模式。

Device Management

DXUTSetCursorSettings

在全屏模式下为鼠标的用法设置可选项。

DXUTSetMultimonSettings

在多显示器下设置框架函数的行为选项。

DXUTToggleFullscreen

应用程序的窗口和全屏模式间的转换。

DXUTToggleREF

应用程序在 hal 和 reference devices间的转换。

DXUT Framework Management

DXUTResetFrameworkState

丢失所有先前的框架状态,重置框架状态(初始化默认状态)。

DXUTShutdown

引发程序终止和框架的清除。

DXUTGetExitCode

取得框架出口代码。

Direct3D Variable Retrieval

DXUTGetD3DObject

取得 IDirect3D9对象的指针。

DXUTGetD3DDevice

取得IDirect3DDevice9接口指针,描述当前设备。

DXUTGetDeviceSettings

取得DXUTDeviceSettings结构用来创建当前设备。

DXUTGetPresentParameters

取得当前设备的表示参数。

DXUTGetBackBufferSurfaceDesc

取得D3DSURFACE_DESC 接口的指针,描述当前适配器的后备缓冲区。

DXUTGetDeviceCaps

取得当前设备能力的D3DCAPS9 指针。

 楼主| 发表于 2006-9-11 15:12:21 | 显示全部楼层

Statistics

DXUTGetFPS

取得当前每秒的帧数。

DXUTGetFrameStats

取得一个字符串指针,包含当前每秒帧数,resolution,后备缓冲区格式,深度/模版缓冲区格式。

DXUTGetDeviceStats

取得一个字符串指针,包含当前设备类型,顶点处理行为,设备名称。

Time

DXUTGetTime

取得当前时间(秒)

DXUTGetElapsedTime

取得上一帧到现在所消耗的帧数。

DXUTSetConstantFrameTime

使用或禁用一个帧与帧间的常量时间。

Timer

DXUTSetTimer

初始化一个新的时间器。

DXUTKillTimer

卸载一个已有的时间器。

Pause

DXUTPause

设置帧间时间并且/或者渲染过程的暂停状态。

DXUTIsRenderingPaused

在当前的设备上是否渲染已经暂停。

DXUTIsTimePaused

在当前的设备上是否时间已经暂停。

User Input

DXUTIsKeyDown

当函数被调用时,指定的一个键盘键是否处在弹起或按下状态。

DXUTIsMouseButtonDown

当函数被调用时,指定的一个鼠标键是否处在弹起或按下状态。

 楼主| 发表于 2006-9-11 15:13:12 | 显示全部楼层
DXUT参考

这节包含了在DXUT的dxut.h头文件中提供的基本的参考信息。DXUT创建Direct3D例子、原型、工具,并更容易的建立坚固、专业的游戏。它简化了窗口和Direct3D API的使用。

参考内容分为下列部分:

· 函数

· 回调函数

· 结构

· 列举

· 常量

See Also

DXUT概观

函数(functions)

DXUT提供下列函数给应用程序使用:

· DXUTCreateDevice

· DXUTCreateDeviceFromSettings

· DXUTCreateWindow

· DXUTFindValidDeviceSettings

· DXUTGetBackBufferSurfaceDesc

· DXUTGetD3DDevice

· DXUTGetD3DObject

· DXUTGetDeviceCaps

· DXUTGetDeviceSettings

· DXUTGetDeviceStats

· DXUTGetElapsedTime

· DXUTGetExitCode

· DXUTGetFPS

· DXUTGetFrameStats

· DXUTGetHINSTANCE

· DXUTGetHWND

· DXUTGetHWNDDeviceFullScreen

· DXUTGetHWNDDeviceWindowed

· DXUTGetHWNDFocus

· DXUTGetPresentParameters

· DXUTGetShowMsgBoxOnError

· DXUTGetTime

· DXUTGetWindowClientRect

· DXUTGetWindowTitle

· DXUTInit

· DXUTIsKeyDown

· DXUTIsMouseButtonDown

· DXUTIsRenderingPaused

· DXUTIsTimePaused

· DXUTIsWindowed

· DXUTKillTimer

· DXUTMainLoop

· DXUTPause

· DXUTRender3DEnvironment

· DXUTResetFrameworkState

· DXUTSetCallbackDeviceChanging

· DXUTSetCallbackDeviceCreated

· DXUTSetCallbackDeviceDestroyed

· DXUTSetCallbackDeviceLost

· DXUTSetCallbackDeviceReset

· DXUTSetCallbackFrameMove

· DXUTSetCallbackFrameRender

· DXUTSetCallbackKeyboard

· DXUTSetCallbackMouse

· DXUTSetCallbackMsgProc

· DXUTSetConstantFrameTime

· DXUTSetCursorSettings

· DXUTSetDevice

· DXUTSetMultimonSettings

· DXUTSetTimer

· DXUTSetWindow

· DXUTShutdown

· DXUTStaticWndProc

· DXUTToggleFullscreen

· DXUTToggleREF

回调函数(structures)

DXUT 提供下列回调函数,它们可以在应用程序中实现:

· LPDXUTCALLBACKDEVICECREATED

· LPDXUTCALLBACKDEVICEDESTROYED

· LPDXUTCALLBACKDEVICELOST

· LPDXUTCALLBACKDEVICERESET

· LPDXUTCALLBACKFRAMEMOVE

· LPDXUTCALLBACKFRAMERENDER

· LPDXUTCALLBACKISDEVICEACCEPTABLE

· LPDXUTCALLBACKKEYBOARD

· LPDXUTCALLBACKMODIFYDEVICESETTINGS

· LPDXUTCALLBACKMOUSE

· LPDXUTCALLBACKMSGPROC

· LPDXUTCALLBACKTIMER

结构(structures)

DXUT提供下列结构:

· DXUTDeviceSettings

· DXUTMatchOptions

列举(Enumerations)

DXUT提供下列列举类型:

· DXUT_MATCH_TYPE

常量(Constants)

DXUT 提供下列常量:

· DXUTERR

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-5-6 15:27

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表