我希望这是对一个我找不到答案的简单问题的简单答案。
如何访问 Directx 11 / DXGI 中的前端缓冲区?我发现在 Directx 9 中可以使用 GetFrontBufferData(),在 Directx 11 中可以使用 GetBuffer() 来访问后台缓冲区,但这存在问题。后缓冲区没有像前缓冲区那样进行计算。
所以我想知道我是否缺少一些东西。
我可以尝试使用 GetDisplaySurfaceData ,除非我误解了某些内容,否则它将无法工作,因为我并不总是处于全屏模式。
编辑:有人可以让我知道 GetBuffer 在 Directx 11 的 SwapChain 中如何工作吗?据我所知,抗锯齿仅发生在前端缓冲区上,而不会发生在后缓冲区上。 0 是第一个后备缓冲区吗? (Microsoft 声明在某些情况下只能使用 0。)
是否有可能在 Directx 11 中获取 Front Buffer?
非常感谢,
您需要使用IDXGISwapChain::GetBuffer
用于检索交换链表面的 API(使用 uuidID3D11Texture2D
对于结果类型)。
现在,交换链缓冲区不可映射,因此您需要将其复制到暂存资源。
- Use
ID3D11Texture2D::GetDesc
检索表面描述
- 修补它与
D3D11_USAGE_STAGING
使用情况和CPU访问标志D3D11_CPU_ACCESS_READ
- 创建临时表面
ID3D11Device::CreateTexture2D
- 复制到暂存表面
ID3D11DeviceContext::CopyResource
你现在有一个ID3D11Texture2D
与交换链缓冲区的内容允许您使用ID3D11DeviceContext::Map
在CPU上读取它的API
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)