我想在内存中(而不是在屏幕上)呈现应用程序(例如浏览器),并将此呈现的结果传输到几个远程桌面。
我有哪些选择?是否有可用于此的Java框架(可能基于OpenGL)?
答案 0 :(得分:3)
OpenGL是一个绘图API;完全不适合你的要求;只是告诉你清理一切。
整个“屏幕外的东西”需要挂钩到图形系统的下半部分。使用Java,这意味着对JNI以及可能还有一些本机二进制代码进行严格修改。恕我直言不值得努力,因为有一个更好的解决方案:
Xorg有一个由VNC帧缓冲( Xvnc )支持的X服务器。您可以启动浏览器,如果没有窗口管理器和桌面环境运行,浏览器将是唯一可见的,没有装饰,标题栏等。然后使用VNC连接到该服务器,只能看到浏览器的图片。从技术上讲,VNC只是JPEG图像的视频流,并且有工具可以从VNC创建常规视频流。
X为您提供了另一种可能性:复合扩展名。 X Composite提供了一种将窗口传输到屏幕外渲染区域的机制。渲染到屏幕外区域的内容必须由所谓的 compositor 合成到屏幕上。将这些屏幕外图像复制到进程内存中并从那里构建视频流是可能的,尽管效率很低。
答案 1 :(得分:0)
根据您要执行的操作,您可以在Linux机器上运行应用程序,并通过SSH将应用程序的输出流式传输到另一台计算机上的xserver。我相信有适用于Windows和MacOS的xservers,但这会让你远离Java。