IDXGISwapChain3::ResizeBuffers1 方法 (dxgi1_4.h)

更改交换链的后台缓冲区大小、格式和缓冲区数,其中交换链是使用 D3D12 命令队列作为输入设备创建的。 在调整应用程序窗口大小时应调用此名称。

语法

HRESULT ResizeBuffers1(
  [in] UINT        BufferCount,
  [in] UINT        Width,
  [in] UINT        Height,
  [in] DXGI_FORMAT Format,
  [in] UINT        SwapChainFlags,
  [in] const UINT  *pCreationNodeMask,
  [in] IUnknown    * const *ppPresentQueue
);

参数

[in] BufferCount

类型: UINT

交换链中的缓冲区数 (包括) 的所有后台缓冲区和前端缓冲区。 此数字可以不同于创建交换链时所使用的缓冲区数。 此数字不能大于 DXGI_MAX_SWAP_CHAIN_BUFFERS。 将此数字设置为零以保留交换链中的现有缓冲区数。 不能为翻转演示文稿模型指定少于两个缓冲区。

[in] Width

类型: UINT

后台缓冲区的新宽度。 如果指定零,DXGI 将使用目标窗口工作区的宽度。 如果调用 IDXGIFactory2::CreateSwapChainForComposition 方法为合成图面创建交换链,则不能将宽度指定为零。

[in] Height

类型: UINT

后台缓冲区的新高度。 如果指定零,DXGI 将使用目标窗口工作区的高度。 如果调用 IDXGIFactory2::CreateSwapChainForComposition 方法为合成图面创建交换链,则不能将高度指定为零。

[in] Format

类型: DXGI_FORMAT

后台缓冲区的新格式的 DXGI_FORMAT类型值。 将此值设置为 DXGI_FORMAT_UNKNOWN 以保留后台缓冲区的现有格式。 翻转表示模型支持比位块传输 (bitblt) 模型更受限的格式集。

[in] SwapChainFlags

类型: UINT

使用按位 OR 运算组合的 DXGI_SWAP_CHAIN_FLAG类型值的组合。 生成的值指定交换链行为的选项。

[in] pCreationNodeMask

类型: const UINT*

总大小为 BufferCount 的 UINT 数组,其中值指示应在哪个节点上创建后台缓冲区。 使用 ResizeBuffers1 和非 null pCreationNodeMask 数组创建的缓冲区对所有节点可见。

[in] ppPresentQueue

类型: IUnknown*

命令队列数组 (id3D12CommandQueue 实例) ,总大小 为 BufferCount。 提供的每个队列必须与 pCreationNodeMask 数组中指定的相应创建节点掩码匹配。 调用 Present () 时,除了旋转到下一帧的下一个缓冲区外,交换链还将通过这些命令队列旋转。 这允许应用控制哪个队列需要同步给定的当前操作。

返回值

类型: HRESULT

如果成功,则返回S_OK;否则为错误代码。 有关错误代码的列表,请参阅 DXGI_ERROR

备注

此方法仅在使用 D3D12 命令队列 (ID3D12CommandQueue) 作为输入设备创建交换链时调用有效。

在多 GPU 适配器上创建交换链时,所有反缓冲区都在节点 1 上创建,并且仅支持单个命令队列。 ResizeBuffers1 使应用程序能够在不同的节点上创建反缓冲区,从而允许将不同的命令队列用于每个节点。 这些功能使备用帧渲染 (AFR) 技术可用于交换链。 请参阅 多适配器系统

另请参阅 IDXGISwapChain::ResizeBuffers 中的“备注”部分,所有这些内容都与 ResizeBuffers1 相关。

要求

   
目标平台 Windows
标头 dxgi1_4.h
Library Dxgi.lib

另请参阅

IDXGISwapChain3