首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我有一个循环,调用ID3D11DeviceContext::CopySubresourceRegion。我怎么能强迫你等呢?

我有一个循环,调用ID3D11DeviceContext::CopySubresourceRegion。我怎么能强迫你等呢?
EN

Stack Overflow用户
提问于 2017-08-30 00:59:14
回答 1查看 774关注 0票数 1

正如标题所述,我在循环中执行一个CopySubresourceRegion,在其中的某个点,我需要强制等待,直到它完成。从MSDN的文档化来看,我似乎可以调用ID3D11DeviceContext::Flush,然后调用ID3D11DeviceContext::GetData来处理由ID3D11Device::CreateQueryD3D11_QUERY_EVENT创建的事件查询。

我已经试过了,到目前为止,它似乎还在测试中,但是有些事情我还不确定。

  1. 如果我在循环开始之前调用CreateQuery一次,并在每个GetData调用中重复使用该查询,那么它会正常工作吗?
  2. 是否应该在创建查询后销毁该查询,以防止查询泄漏?似乎没有DestroyQuery方法,所以可能在我的ID3D11Query*上调用空闲
  3. 如果在我需要等待复制完成之前,我可以调用ID3D11DeviceContext::Map或Unmap,我还需要刷新吗?
EN

回答 1

Stack Overflow用户

发布于 2017-08-30 18:22:21

为什么你需要一个明确的等待完成?D3D11在生命周期内被屏蔽,已经在飞行中使用了.如果您调用Map,系统一定要等待完成。

通常情况下,我们想要的是相反的行为,能够以非阻塞的方式查询是否完成,从而知道何时调用Map是安全的,通过使用查询。

对于2.查询就像D3D11中的任何其他资源一样,您可以通过调用Release来销毁它们,并且可以重用它们,创建一个查询池,在使用时标记它们,然后在能够使用GetData收集数据之后再次标记它们可用。

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

https://stackoverflow.com/questions/45950352

复制
相关文章

相似问题

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