IDirect3DDevice9Ex::ResetEx 方法 (d3d9.h)

使用所有其他持久图面重置交换链的类型、大小和格式。

语法

HRESULT ResetEx(
  [in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
  [in, out] D3DDISPLAYMODEEX      *pFullscreenDisplayMode
);

参数

[in, out] pPresentationParameters

类型: D3DPRESENT_PARAMETERS*

指向 D3DPRESENT_PARAMETERS 结构的指针,描述新的表示参数。 此值不能为 NULL

切换到全屏模式时,Direct3D 将尝试查找与后台缓冲区格式匹配的桌面格式,以便后台缓冲区和前缓冲区格式 (相同,无需) 进行颜色转换。

此方法返回时:

  • BackBufferCount、BackBufferWidth 和 BackBufferHeight 设置为零。
  • BackBufferFormat 仅针对窗口模式设置为 D3DFORMAT ;全屏模式必须指定格式。

[in, out] pFullscreenDisplayMode

类型: D3DDISPLAYMODEEX*

指向描述所需显示模式属性 的D3DDISPLAYMODEEX 结构的指针。 必须为全屏应用程序提供此值,但对于窗口化应用程序,此值可以为 NULL

返回值

类型: HRESULT

方法可以返回:D3D_OK、D3DERR_DEVICELOST或D3DERR_DEVICEHUNG (请参阅 D3DERR) 。

如果此方法返回D3DERR_DEVICELOST或D3DERR_DEVICEHUNG则应用程序只能调用 IDirect3DDevice9Ex::ResetExIDirect3DDevice9Ex::CheckDeviceState 或释放接口指针;任何其他 API 调用都将导致异常。

注解

如果调用 IDirect3DDevice9Ex::ResetEx 失败,设备将处于丢失状态 (,如从调用 IDirect3DDevice9Ex::CheckDeviceState) 返回值 D3DERR_DEVICELOST 指示。 有关在丢失设备上下文中使用 IDirect3DDevice9Ex::ResetEx 的详细信息,请参阅 IDirect3DDevice9Ex::CheckDeviceState丢失的设备行为更改

与以前版本的 DirectX 不同,调用 IDirect3DDevice9Ex::ResetEx 不会导致表面、纹理或状态信息丢失。

像素着色器和顶点着色器在 IDirect3DDevice9Ex::ResetEx 调用 Direct3D 9 后仍然有效。 应用程序无需显式重新创建它们。

有两种不同类型的交换链:全屏或窗口交换链。 如果新的交换链是全屏的,则适配器将置于与新大小匹配的显示模式中。

应用程序可能需要在此调用 (期间向其发送消息,例如,在此调用) 返回之前;应用程序应采取预防措施,暂时不调用 Direct3D。

如果在与用于创建重置设备的线程不同的线程上调用 IDirect3DDevice9Ex::ResetEx,则调用 IDirect3DDevice9Ex::ResetEx 将失败。

调用 IDirect3D9Ex::CreateDeviceEx、IDirect3DDevice9Ex::ResetExIDirect3DDevice9:CreateAdditionalSwapChain 时,可以为窗口模式后退缓冲区格式指定D3DFMT_UNKNOWN。 这意味着应用程序在为窗口模式调用 IDirect3D9Ex::CreateDeviceEx 之前不必查询当前桌面格式。 对于全屏模式,必须指定后台缓冲区格式。 将 BackBufferCount 设置为等于零 (BackBufferCount = 0) 会导致一个后台缓冲区。

尝试重置组中的多个显示适配器时,请将 pPresentationParameters 设置为指向 D3DPRESENT_PARAMETERS 结构的数组,适配器组中每个显示一个。

如果使用 D3DCREATE_ADAPTERGROUP_DEVICE 创建多头设备, 则 IDirect3DDevice9Ex::ResetEx 需要 D3DPRESENT_PARAMETERS 结构数组,其中每个结构必须指定全屏显示。 若要切换回窗口模式,应用程序必须销毁设备,并在窗口模式下重新创建非多头设备。

要求

要求
目标平台 Windows
标头 d3d9.h
Library D3D9.lib

另请参阅

IDirect3DDevice9Ex