GetFrontBufferData 到视频内存而不是系统内存
我想使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论