用Java捕获DirectX程序的屏幕截图

时间:2011-07-13 07:48:00

标签: java opengl directx

我编写了一个Java应用程序,它使用java.awt.Robot来获取屏幕的屏幕截图,并想知道是否可以使用DirectX / OpenGL捕获程序?

每次我尝试这样做时,都会出现黑屏

4 个答案:

答案 0 :(得分:1)

不知道这是否真的是一个解决方案,但似乎有更多可能的方法来使用“FrameGrabber”或JavaCV中的一些相关类来获取屏幕截图信息:http://code.google.com/p/javacv/ 屏幕上显示的一些最终输出可以在显卡上计算,该显卡将着色器设置为在将图像数据放入显示缓冲区之前对图像数据进行操作,因此可能无法在没有模拟的情况下捕获某些效果。环回(从视频输出到捕获卡上的视频)。

相关帖子How to take screenshots fast in Java?

答案 1 :(得分:1)

OpenGL是一个绘图API,而不是图形系统的通用接口。有时,通过一些肮脏的黑客确实可以通过OpenGL截取屏幕截图。然而,最近我试图在现代操作系统上重新实现它,看看它是否仍然有效,不,它不再存在。

答案 2 :(得分:0)

呃......很难; o)

我尝试了一些其他的截图工具,也得到了黑屏。看起来DirectX 将图形直接传递给监视器输出。我想知道是否可以在java应用程序中访问它。

答案 3 :(得分:0)

是的,这是可能的。但也许只有在有限的情况下。

我已经使用Robot createScreenCapture在linux和windows上成功捕获了OpenGL(jogl)窗口中的内容。

有关实施的一些具体信息可能与您有所不同:

  • 对createScreenCapture的调用是在OpenGL中完成的 应用。
  • 该应用程序使用重量级GLCanvas
  • 使用Java 6

确保传递正确的坐标。您可以从GraphicsEnvironment

获取要使用的屏幕坐标