IDirect3DDevice9::Reset 方法 (d3d9.h)
重置交换链的类型、大小和格式。
语法
HRESULT Reset(
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);
参数
[in, out] pPresentationParameters
指向 D3DPRESENT_PARAMETERS 结构的指针,描述新的表示参数。 此值不能为 NULL。
切换到全屏模式时,Direct3D 将尝试查找与后台缓冲区格式匹配的桌面格式,以便后台缓冲区和前缓冲区格式 (相同,无需) 进行颜色转换。
此方法返回时:
- BackBufferCount、BackBufferWidth 和 BackBufferHeight 设置为零。
- BackBufferFormat 仅针对窗口模式设置为 D3DFMT_UNKNOWN ;全屏模式必须指定格式。
返回值
类型: HRESULT
可能的返回值包括:D3D_OK、D3DERR_DEVICELOST、D3DERR_DEVICEREMOVED、D3DERR_DRIVERINTERNALERROR或D3DERR_OUTOFVIDEOMEMORY (请参阅 D3DERR) 。
注解
如果对 IDirect3DDevice9::Reset 的调用失败,设备将被置于“丢失”状态 (,从调用 IDirect3DDevice9::TestCooperativeLevel) 的返回值D3DERR_DEVICELOST指示,除非它已处于“未重置”状态 (,如调用 IDirect3DDevice9 的返回值D3DERR_DEVICENOTRESET所指示:TestCooperativeLevel) 。 有关在丢失设备上下文中使用 IDirect3DDevice9::Reset 的详细信息,请参阅 IDirect3DDevice9::TestCooperativeLevel 和丢失的设备 (Direct3D 9) 。
调用 IDirect3DDevice9::Reset 会导致所有纹理内存图面丢失、从视频内存中刷新托管纹理以及丢失所有状态信息。 在为设备调用 IDirect3DDevice9::Reset 方法之前,应用程序应释放任何显式呈现目标、深度模具表面、其他交换链、状态块以及与设备关联的D3DPOOL_DEFAULT资源。
有两种不同类型的交换链:全屏或窗口交换链。 如果新的交换链是全屏的,则适配器将置于与新大小匹配的显示模式中。
Direct3D 9 应用程序可能需要在此调用 (期间向其发送消息,例如,在此调用) 返回之前;应用程序应采取预防措施,暂时不调用 Direct3D。 此外,当 IDirect3DDevice9::Reset 失败时,唯一可以调用的有效方法是 IDirect3DDevice9::Reset、 IDirect3DDevice9::TestCooperativeLevel 和各种 Release 成员函数。 调用任何其他方法都可能导致异常。
如果在与用于创建要重置设备的线程不同的线程上调用 IDirect3DDevice9::Reset,则调用 IDirect3DDevice9::Reset 将失败。
像素着色器和顶点着色器在 IDirect3DDevice9::Reset 调用 Direct3D 9 后仍然有效。 应用程序无需显式重新创建它们。
在调用 IDirect3D9::CreateDevice、IDirect3DDevice9::Reset 和 IDirect3DDevice9::CreateAdditionalSwapChain 时,可以为窗口模式后退缓冲区格式指定D3DFMT_UNKNOWN。 这意味着应用程序在为窗口模式调用 IDirect3D9::CreateDevice 之前不必查询当前桌面格式。 对于全屏模式,必须指定后台缓冲区格式。 将 BackBufferCount 设置为等于零 (BackBufferCount = 0) 会导致一个后台缓冲区。
尝试重置组中的多个显示适配器时,请将 pPresentationParameters 设置为指向 D3DPRESENT_PARAMETERS 结构的数组,适配器组中每个显示一个。
如果使用 D3DCREATE_ADAPTERGROUP_DEVICE 创建多头设备, 则 IDirect3DDevice9::Reset 需要 D3DPRESENT_PARAMETERS 结构数组,其中每个结构必须指定全屏显示。 若要切换回窗口模式,应用程序必须销毁设备,并在窗口模式下重新创建非多头设备。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | d3d9.h (包括 D3D9.h) |
Library | D3D9.lib |