我希望这是对一个我找不到答案的简单问题的简单回答。
如何访问Directx 11 / DXGI中的前端缓冲区?我在Directx 9中发现,您可以使用GetFrontBufferData(),也可以在Directx 11中使用GetBuffer()来访问后台缓冲区,但这有一些问题。后台缓冲区没有前面缓冲区所做的计算。
所以我想知道我是不是错过了什么。
我可以尝试使用GetDisplaySurfaceData,除非我有错误理解的东西,否则它就不能工作,因为我并不总是处于全屏模式。
编辑:有人能告诉我GetBuffer是如何在Directx 11的SwapChain中工作的吗?正如我所读到的,反别名只发生在前面的缓冲区上,而不是后台缓冲区上。0是第一个后台缓冲区吗?(Microsoft声明在某些情况下只能使用0。)
是否有可能在Directx 11中获得前端缓冲区?
非常感谢,
发布于 2013-08-27 10:18:38
您需要使用uuid API来检索交换链面(结果类型使用IDXGISwapChain::GetBuffer
ID3D11Texture2D
)。
现在,交换链缓冲区是不可映射的,因此需要将其复制到暂存资源中。
ID3D11Texture2D::GetDesc
检索表面描述D3D11_USAGE_STAGING
使用和D3D11_CPU_ACCESS_READ
的cpu访问标志对其进行修补ID3D11Device::CreateTexture2D
ID3D11DeviceContext::CopyResource
现在有了一个ID3D11Texture2D
,它包含交换链缓冲区的内容,允许您使用ID3D11DeviceContext::Map
API在CPU上读取它。
https://stackoverflow.com/questions/18459004
复制相似问题