2013-01-07 108 views
2

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

我有点失落,任何帮助将不胜感激;)。

PS:我使用Python 2.7.3编码在Windows 7

感谢

回答

4

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

实际上,以最简单的方式截取屏幕截图,涉及抓取backbuffer并将其写入文件。你的Python DirectX绑定应该为后台或前台缓冲区提供支持,从而制作纹理并填充数据;之后,形象写作取决于你。

不幸的是,获取backbuffer需要在应用程序获取它之前钩住DirectX并拦截呈现上下文。尽管很简单,但这并没有很好的记录,并且需要一些(C++)代码才能实现。您必须强制应用程序使用您控制的备用渲染上下文,然后自己截取屏幕截图。

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

编辑:如果您有兴趣这样做,我可以添加更多的细节和一些可能有用的代码链接。我仍然不确定Python中是否有可能,但不要让它阻止你尝试。

+0

当然,我一定会看看 – user1956413

+0

我会抓住一些更多的信息,并在我回家后尽快编辑它(稍后逃离工作场所;))。 – ssube