GetFrontBufferData 到视频内存而不是系统内存

发布于 2024-10-30 07:53:12 字数 425 浏览 3 评论 0原文

我想使用 DirectX 9 捕获屏幕上的内容并在程序中显示它的较小版本。

为了捕获它,我发现并正在使用 GetFrontBufferData。然而,它的工作方式是写入系统内存(D3DPOOL_SYSTEMMEM)中定义的表面。这导致我必须将屏幕截图传输回视频内存,以便我可以绘制它。

正如您可以想象的那样,来自(视频内存 -> 系统内存 -> 视频内存)的这种不必要的传输会导致我的程序出现相当大的快门速度。

有没有办法获取存储在前端缓冲区中的图像并将其放入视频内存中的表面上?

这个问题是我最近的问题的衍生问题:使用 DirectX 捕获和绘制屏幕截图

Using DirectX 9 I want to capture what is on the screen and display a smaller version of it in my program.

To capture it I found and am using GetFrontBufferData. However the way it works is by writing to a surface defined in system memory (D3DPOOL_SYSTEMMEM). This results in my having to then transfer the screen shot back into video memory so I can then draw it.

As you can imagine this needless transfer from (video memory -> System memory -> video memory) causes quite a shutter in my program.

Is there a way I can get the image stored in the front buffer and put it onto a surface in video memory?

This question is a spin off of my recent question : Capture and Draw a ScreenShot using DirectX

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文