如何快速地对整个游戏画面进行屏幕截图?像每秒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 ..very slow ….它只适用于DirectX 1.0,因为在DirectX 2.0中不存在SurfaceLoader
我在一些帖子中读到的另一种方式是使用:
s = device.GetBackBuffer(0,Microsoft.DirectX.Direct3D.BackBufferType.Mono);
,但这只是截图到了当前的窗口.
[[3]]
我曾尝试使用Taksi(在sourceforge.net上)…但我不知道如何在c#中使用它并使其工作.
请帮帮我…
解决方法
你真的想挂钩到directx所以你可以像在那个游戏/应用程序那样进行调用.下面是一些这样做的网站(大多数绘制额外的东西,但我不明白为什么你不能每x帧保存后备缓冲区):
http://www.gamedev.net/topic/359794-c-direct3d-hooking-sample/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。