从交换链获取多个屏幕缓冲区

Getting multiple screen buffers from swap-chain

本文关键字:屏幕 缓冲区 获取 交换      更新时间:2023-10-16

我想创建多个渲染目标视图,我试过了,但我无法获得超过 2 的缓冲区。

我已经将DXGI_SWAP_CHAIN_DESC的缓冲区计数值设置为缓冲区大小

UINT const BufferSize = 4;
ID3D11Texture2D* BufferTemp;
ID3D11RenderTargetView** RenderTargetView = new ID3D11RenderTargetView*[BufferSize];
for (UINT i = 0; i < BufferSize; i++) {
    ZeroMemory(&BufferTemp, sizeof(BufferTemp));
    SwapChain->GetBuffer(i, __uuidof(ID3D11Texture2D), (void**)&BufferTemp);
    Device->CreateRenderTargetView(BufferTemp, 0, &RenderTargetView[i]);
}

在实际代码中,我已经初始化了 HRESULT 值,它在第一个循环中说S_OK,但之后它说0x887a0001。

如果此交换链正在使用DXGI_SWAP_EFFECT_DISCARD效果,则GetBuffer方法只能访问第一个缓冲区。也就是说,您只能查看唯一可以绘制的缓冲区。