首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 10屏幕截图DXGI屏幕截图

Windows 10屏幕截图DXGI屏幕截图
EN

Stack Overflow用户
提问于 2020-12-09 16:38:28
回答 1查看 141关注 0票数 1

我正在做DXGI截图,在谷歌上有很多例子,它们工作得很好(比如https://github.com/pgurenko/DXGICaptureSample/blob/master/DXGICaptureSample/DXGIManager.cpp)。然后我发现Windows10内置了截屏工具,并有兴趣检查它是否使用了DXGI。在windbg中加载后,我看到它像预期的那样调用了D3D11!D3D11CreateDevice和dxgi!CDXGIAdapter::EnumOutput,但它从来没有像我能找到的所有示例代码那样调用dxgi!CDXGIOutput::DuplicateOutput。所以问题是它是如何捕捉屏幕的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-10 23:55:54

简单地说,DXGI捕获屏幕的方式是首先接收一个指针,该指针指向屏幕的2d纹理,称为GPU中的帧缓冲区。然后,该指针(连同纹理高度、宽度等描述)从GPU读取并将数据复制到CPU存储器。这就是为什么当人们开始流式传输时,帧速率会受到影响,因为总线( CPU和GPU之间的连接)不是很大。该图像现在同时存在于GPU和CPU ram中,直到下一次绘制调用帧缓冲区被覆盖为止。

仅仅使用DXGI做一些在线快速搜索(https://docs.microsoft.com/en-us/windows/win32/direct3darticles/dxgi-best-practices)可能是“开发人员头疼的事情”。我的建议是检查屏幕的格式,看看它是否干扰了DXGI。在复制的同一帧上更改帧缓冲区中的任何内容都会导致问题。

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

https://stackoverflow.com/questions/65213270

复制
相关文章

相似问题

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