【发布时间】:2011-10-04 06:40:42
【问题描述】:
我编写了一个 Java 应用程序,它使用 java.awt.Robot 对屏幕进行屏幕捕获,我想知道是否可以使用 DirectX/OpenGL 捕获程序?
每次我尝试这样做时,都会出现黑屏
【问题讨论】:
我编写了一个 Java 应用程序,它使用 java.awt.Robot 对屏幕进行屏幕捕获,我想知道是否可以使用 DirectX/OpenGL 捕获程序?
每次我尝试这样做时,都会出现黑屏
【问题讨论】:
是的,这是可能的。但也许只在有限的情况下。
我已经成功捕获了 linux 上的 OpenGL (jogl) 窗口和使用 Robot createScreenCapture 的窗口上的内容。
关于实施的一些具体信息可能对您有所不同:
确保传递正确的坐标。您可以从GraphicsEnvironment获取要使用的屏幕坐标
【讨论】:
OpenGL 是一个绘图 API,而不是图形系统的通用接口。有时,通过一些肮脏的黑客攻击确实可以使用 OpenGL 截取屏幕截图。但是最近我尝试在现代操作系统上重新实现它,看看它是否仍然有效,不,它不再有效了。
【讨论】:
不知道这是否真的是一个解决方案,但似乎有更多可能的方法可以使用“FrameGrabber”或 JavaCV 中的一些相关类来获取屏幕截图信息:http://code.google.com/p/javacv/ 屏幕上显示的一些最终输出可以在图形卡上计算出来环回(在采集卡上从视频输出到视频输入)。
【讨论】:
呃……一个艰难的;o)
我尝试了其他一些截图工具,也得到了黑屏。看起来 DirectX 正在将图形直接传递到监视器输出。我想知道是否可以在 java 应用程序中访问它。
【讨论】: