D3DPRESENT_PARAMETERS结构
描述演示文稿参数。
语法
typedef struct D3DPRESENT_PARAMETERS {
UINT BackBufferWidth;
UINT BackBufferHeight;
D3DFORMAT BackBufferFormat;
UINT BackBufferCount;
D3DMULTISAMPLE_TYPE MultiSampleType;
DWORD MultiSampleQuality;
D3DSWAPEFFECT SwapEffect;
HWND hDeviceWindow;
BOOL Windowed;
BOOL EnableAutoDepthStencil;
D3DFORMAT AutoDepthStencilFormat;
DWORD Flags;
UINT FullScreen_RefreshRateInHz;
UINT PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
成员
-
BackBufferWidth
-
类型: UINT
-
新交换链的后部缓冲区的宽度(以像素为单位)。 如果 Windowed 为 FALSE (演示文稿是全屏) ,则此值必须等于通过 EnumAdapterModes 找到的枚举显示模式之一的宽度。 如果 Windowed 为 TRUE 且 BackBufferWidth 或 BackBufferHeight 为零,则 hDeviceWindow (或焦点窗口的工作区的相应维度,如果 hDeviceWindow 为 NULL ,则采用) 。
-
BackBufferHeight
-
类型: UINT
-
新交换链的后台缓冲区的高度(以像素为单位)。 如果 Windowed 为 FALSE (演示文稿是全屏) ,则此值必须等于通过 EnumAdapterModes 找到的枚举显示模式之一的高度。 如果 Windowed 为 TRUE 且 BackBufferWidth 或 BackBufferHeight 为零,则 hDeviceWindow (或焦点窗口的工作区的相应维度,如果 hDeviceWindow 为 NULL ,则采用) 。
-
BackBufferFormat
-
类型: D3DFORMAT
-
后台缓冲区格式。 有关格式的详细信息,请参阅 D3DFORMAT。 此值必须是 CheckDeviceType 验证的呈现目标格式之一。 可以使用 GetDisplayMode 获取当前格式。
事实上,在窗口模式下,可以为 BackBufferFormat 指定D3DFMT_UNKNOWN。 这会告知运行时使用当前显示模式格式,无需调用 GetDisplayMode。
对于窗口化应用程序,后台缓冲区格式不再需要与显示模式格式匹配,因为如果硬件支持颜色转换) ,则现在可以通过硬件 (进行颜色转换。 可能的后台缓冲区格式集受约束,但运行时将允许将任何有效的后台缓冲区格式呈现给任何桌面格式。 (还有设备在桌面中可操作的其他要求;设备通常不以每像素 8 位模式运行。)
全屏应用程序无法执行颜色转换。
-
BackBufferCount
-
类型: UINT
-
使用 Direct3D 9Ex ) 时, 此值可以是 0 到 D3DPRESENT_BACK_BUFFERS_MAX (或 D3DPRESENT_BACK_BUFFERS_MAX_EX。 值 0 被视为 1。 如果无法创建后台缓冲区数,则运行时将失败方法调用,并使用可创建的后台缓冲区数填充此值。 因此,应用程序可以使用相同的D3DPRESENT_PARAMETERS结构调用方法两次,并期望它第二次工作。
如果无法创建一个后台缓冲区,方法将失败。 BackBufferCount 的值会影响允许的交换效果集。 具体而言,任何D3DSWAPEFFECT_COPY交换效果都需要恰好有一个后台缓冲区。
-
MultiSampleType
-
D3DMULTISAMPLE_TYPE枚举类型的成员。 该值必须D3DMULTISAMPLE_NONE,除非 SwapEffect 已设置为 D3DSWAPEFFECT_DISCARD。 仅当交换效果D3DSWAPEFFECT_DISCARD时,才支持多重采样。
-
MultiSampleQuality
-
类型: DWORD
-
质量级别。 有效范围介于 0 到 1 之间,比 CheckDeviceMultiSampleType 使用的 pQualityLevels 返回的级别少 1。 传递较大的值将返回错误D3DERR_INVALIDCALL。 呈现目标或深度模具图面和 D3DMULTISAMPLE_TYPE 的配对值必须匹配。
-
SwapEffect
-
类型: D3DSWAPEFFECT
-
D3DSWAPEFFECT 枚举类型的成员。 运行时将保证有关缓冲区交换行为的隐含语义;因此,如果 Windowed 为 TRUE 且 SwapEffect 设置为 D3DSWAPEFFECT_FLIP,则运行时将创建一个额外的后台缓冲区,并在演示时复制成为前缓冲区的缓冲区。
D3DSWAPEFFECT_COPY要求 将 BackBufferCount 设置为 1。
D3DSWAPEFFECT_DISCARD将在调试运行时中强制实施,方法是在显示缓冲区后用噪音填充任何缓冲区。
Direct3D9 和 Direct3D9Ex 之间的差异:
- 在 Direct3D9Ex 中,添加D3DSWAPEFFECT_FLIPEX以指定应用程序何时采用翻转模式。 也就是说,应用程序的框架以窗口模式 (传递,而不是将) 复制到桌面窗口管理器 (DWM) 进行组合。 翻转模式提供更高效的内存带宽,并使应用程序能够利用全屏显示统计信息。 它不会更改全屏行为。 翻转模式行为从 Windows 7 开始可用。
-
hDeviceWindow
-
类型: HWND
-
设备窗口确定屏幕上后台缓冲区的位置和大小。 在 演示期间,当后台缓冲区内容复制到前缓冲区时,Direct3D 会使用此功能。
对于全屏应用程序,这是顶部窗口的句柄 (即焦点窗口) 。
对于使用多个全屏设备 ((例如多监视器系统) )的应用程序,只有一台设备可以使用焦点窗口作为设备窗口。 所有其他设备必须具有唯一的设备窗口。
对于窗口模式应用程序,此句柄将是 “演示”的默认目标窗口。 如果此句柄为 NULL,则将采用焦点窗口。
请注意,运行时不会尝试反映用户对窗口大小的更改。 重置此窗口时,后台缓冲区不会隐式重置。 但是, Present 方法会自动跟踪窗口位置更改。
-
窗口
-
类型: BOOL
-
如果应用程序以窗口方式运行,则为 TRUE;如果应用程序全屏运行,则为 FALSE。
-
EnableAutoDepthStencil
-
类型: BOOL
-
如果此值为 TRUE,则 Direct3D 将管理应用程序的深度缓冲区。 创建设备时,设备将创建深度模具缓冲区。 深度模具缓冲区将自动设置为设备的呈现目标。 重置设备后,深度模具缓冲区将自动销毁并重新创建新大小。
如果 EnableAutoDepthStencil 为 TRUE,则 AutoDepthStencilFormat 必须是有效的深度模具格式。
-
AutoDepthStencilFormat
-
类型: D3DFORMAT
-
D3DFORMAT 枚举类型的成员。 设备将创建的自动深度模具图面的格式。 除非 EnableAutoDepthStencil 为 TRUE,否则将忽略此成员。
-
标志
-
类型: DWORD
-
D3DPRESENTFLAG 常量之一。
-
FullScreen_RefreshRateInHz
-
类型: UINT
-
显示适配器刷新屏幕的速率。 该值取决于运行应用程序的模式:
- 对于窗口模式,刷新率必须为 0。
- 对于全屏模式,刷新率是 EnumAdapterModes 返回的刷新率之一。
-
PresentationInterval
-
类型: UINT
-
交换链的后台缓冲区可以呈现给前缓冲区的最大速率。 有关支持的模式和间隔的详细说明,请参阅 D3DPRESENT。
要求
要求 | 值 |
---|---|
标头 |
|
请参阅