在Python中截取DirectX游戏的截图

时间:2013-01-07 22:21:45

标签: python directx screenshot

我正在寻找一种在Python中截取DirectX游戏截图的方法。我已经尝试使用PIL和其他东西,但我最终只有黑色截图。我看到项目directpython11提供了一些Python绑定到一些DirectX的东西,但我没有找到任何与外部DirectX应用程序的截图相关的内容。

我有点失落,任何帮助都会受到赞赏;)。

PS:我在Windows 7上使用Python 2.7.3 32位进行编码。

由于

1 个答案:

答案 0 :(得分:4)

这是一个相当复杂的话题。

实际上,以最简单的方式截取屏幕截图,包括抓取后备缓冲区并将其写入文件。你的Python DirectX绑定应该提供对纹理的支持,并从后面或前面的缓冲区填充数据;在那之后,图像写作取决于你。

不幸的是,进入后台缓冲区需要挂钩DirectX并在应用程序获得它之前拦截渲染上下文。虽然简单,但这并没有很好的文档记录,需要一些不错的(C ++)代码来实现。您必须强制应用程序使用您控制的备用渲染上下文,然后自己拍摄屏幕截图。

据我所知,这种拦截的基础知识不能用纯Python完成。您可以使用显示编解码器(在将屏幕传送到合成器后抓取屏幕)找到一种方法,或者您可以使用现有的DirectX挂钩并实现最小的IPC来获取数据并将其提供给Python以进行处理和编写到文件。

编辑:如果您对此感兴趣,我可以添加更多详细信息和一些可能有用的代码链接。我仍然不确定它只能用Python,但不要让它阻止你尝试。