gpt4 book ai didi

c# - 在 C# 中捕获游戏屏幕截图的最快方法?(每秒超过 20 张图像)

转载 作者:行者123 更新时间:2023-11-30 12:51:24 25 4
gpt4 key购买 nike

如何快速截取整个游戏画面?大约每秒 20-30 次?(我想将它们转换为视频)

[[1]]我试过 WMEncoder。结果是 WMEncoder 只能使用一组预配置的编解码器以视频格式 (wma) 捕获屏幕和屏幕区域。 (29 fps 最佳编码结果)。WMEncoder 无法截屏。

[[2]]我试过 DirectX:

Surface s = device.CreateOffscreenPlainSurface(
Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
Format.A8R8G8B8, Pool.SystemMemory);
device.GetFrontBufferData(0, s);
SurfaceLoader.Save("c:\\Screenshot"+i.ToString()+".bmp", ImageFileFormat.Bmp, s);

这像 gdi 一样工作......非常慢......并且它只在 DirectX 1.0 中工作,因为 SurfaceLoader 在 directX 2.0 中不存在

我在一些帖子中读到的另一种方法是使用:

s = device.GetBackBuffer(0, 0, Microsoft.DirectX.Direct3D.BackBufferType.Mono);

,但这只会对当前窗口进行截图。

[[3]]我试过使用 Taksi(位于 sourceforge.net)...但我不知道如何在 C# 中使用它并让它工作。

请帮帮我...

最佳答案

你真的很想连接到 directx,这样你就可以像那个游戏/应用程序一样进行调用。下面是一些执行此操作的站点(大多数绘制额外的东西,但我不明白为什么你不能每隔 x 帧保存一次后备缓冲区):

http://www.gamedev.net/topic/359794-c-direct3d-hooking-sample/

免责声明:我没有尝试过这个,所以不确定您可以获得多少 FPS,但我认为这是最快的方法,因为您在游戏中可以有效地做到这一点。

关于c# - 在 C# 中捕获游戏屏幕截图的最快方法?(每秒超过 20 张图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7186085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com