首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Directx 11前端缓冲器

Directx 11前端缓冲器
EN

Stack Overflow用户
提问于 2013-08-27 07:01:42
回答 1查看 4.9K关注 0票数 4

我希望这是对一个我找不到答案的简单问题的简单回答。

如何访问Directx 11 / DXGI中的前端缓冲区?我在Directx 9中发现,您可以使用GetFrontBufferData(),也可以在Directx 11中使用GetBuffer()来访问后台缓冲区,但这有一些问题。后台缓冲区没有前面缓冲区所做的计算。

所以我想知道我是不是错过了什么。

我可以尝试使用GetDisplaySurfaceData,除非我有错误理解的东西,否则它就不能工作,因为我并不总是处于全屏模式。

编辑:有人能告诉我GetBuffer是如何在Directx 11的SwapChain中工作的吗?正如我所读到的,反别名只发生在前面的缓冲区上,而不是后台缓冲区上。0是第一个后台缓冲区吗?(Microsoft声明在某些情况下只能使用0。)

是否有可能在Directx 11中获得前端缓冲区?

非常感谢,

EN

回答 1

Stack Overflow用户

发布于 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上读取它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18459004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档