IDirect3DDevice9Ex::ResetEx 方法 (d3d9.h)
使用所有其他持久图面重置交换链的类型、大小和格式。
语法
HRESULT ResetEx(
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[in, out] D3DDISPLAYMODEEX *pFullscreenDisplayMode
);
参数
[in, out] pPresentationParameters
指向 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::ResetEx、 IDirect3DDevice9Ex::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::ResetEx 和 IDirect3DDevice9: :CreateAdditionalSwapChain 时,可以为窗口模式后退缓冲区格式指定D3DFMT_UNKNOWN。 这意味着应用程序在为窗口模式调用 IDirect3D9Ex::CreateDeviceEx 之前不必查询当前桌面格式。 对于全屏模式,必须指定后台缓冲区格式。 将 BackBufferCount 设置为等于零 (BackBufferCount = 0) 会导致一个后台缓冲区。
尝试重置组中的多个显示适配器时,请将 pPresentationParameters 设置为指向 D3DPRESENT_PARAMETERS 结构的数组,适配器组中每个显示一个。
如果使用 D3DCREATE_ADAPTERGROUP_DEVICE 创建多头设备, 则 IDirect3DDevice9Ex::ResetEx 需要 D3DPRESENT_PARAMETERS 结构数组,其中每个结构必须指定全屏显示。 若要切换回窗口模式,应用程序必须销毁设备,并在窗口模式下重新创建非多头设备。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d9.h |
Library | D3D9.lib |