【问题标题】:Screen Capture of DirectX programs with Java使用 Java 的 DirectX 程序的屏幕截图
【发布时间】:2011-10-04 06:40:42
【问题描述】:

我编写了一个 Java 应用程序,它使用 java.awt.Robot 对屏幕进行屏幕捕获,我想知道是否可以使用 DirectX/OpenGL 捕获程序?

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

【问题讨论】:

    标签: java opengl directx


    【解决方案1】:

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

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

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

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

    确保传递正确的坐标。您可以从GraphicsEnvironment获取要使用的屏幕坐标

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        不知道这是否真的是一个解决方案,但似乎有更多可能的方法可以使用“FrameGrabber”或 JavaCV 中的一些相关类来获取屏幕截图信息:http://code.google.com/p/javacv/ 屏幕上显示的一些最终输出可以在图形卡上计算出来环回(在采集卡上从视频输出到视频输入)。

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

        【讨论】:

          【解决方案4】:

          呃……一个艰难的;o)

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多