Java Screen Capture OpenGL和DirectX全屏应用程序

时间:2014-07-22 23:22:47

标签: java opengl directx screenshot fullscreen

我试图在java中设计一个程序,定期(每100毫秒左右)截取我的显示屏截图并计算整个屏幕的平均像素rgb值。我需要这个能够使用视频游戏和iTunes / Quicktime视频。但是我尝试使用JNA和机器人捕获屏幕,它只在我没有全屏或iTunes视频捕获视频游戏时才有效。例如,我通过保存图像来检查和查看正在发生的事情来测试我的代码。当我在视频游戏中时,我只看到一个空白窗口的屏幕截图。我认为这是因为游戏使用directx或openGL,并且与典型应用程序的硬件通信方式不同。

如果我使用这个this方法捕获屏幕截图而不是机器人或JNA,这会解决我的问题吗?看起来它正在从openGL屏幕缓冲区复制数据。那么DirectX应用程序呢?

我基本上只是希望能够始终在屏幕上获取感知的像素数据。无论是否是全屏DirectX或OpenGL应用程序。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我猜这是一个自制版本的amBX照明系统。即使不是,以下页面也可以为您提供帮助;它包含用于DIY环境照明设置的java代码和arduino代码,它需要完成同样的事情:

http://siliconrepublic.blogspot.com/2011/02/arduino-based-pc-ambient-lighting.html

需要考虑的事项: 1.出于处理速度的原因,该代码示例故意忽略屏幕上的某些像素 2.根据您所显示的内容(赛车游戏与第一人称射击游戏与自上而下游戏策略或MOBA游戏与电影相比),您可能需要将显示屏分成不同的扇区。例如,对于赛车游戏,您可能希望左侧和右侧更加独立并且对快速变化非常敏感,而对于一般的电影观看,您可能需要更一般的输出,因为您处理更多种类相机可以移动的方式。