远程离屏渲染(Linux / 无 GUI)
Posted
技术标签:
【中文标题】远程离屏渲染(Linux / 无 GUI)【英文标题】:Remote off-screen rendering (Linux / no GUI) 【发布时间】:2013-12-20 10:18:00 【问题描述】:情况如下: 有一个远程 Linux 服务器(无 GUI),用于构建 OpenGL 场景。 目标:将生成的图像传输到客户端 Windows 机器 我无法理解离屏渲染的一些东西,阅读了很多文献,但仍然不太了解: 使用 GLUT 意味着设置变量 DISPLAY。如果我正确理解意味着通过 x11 进行远程渲染。如果我在 Windows(XWin 服务器)机器上运行 x11 服务器,一切正常。如果我尝试在不渲染服务器的情况下运行,则:freeglut (./WFWorkspace): failed to open display 'localhost: 11.0'。反正 x11 不合适。
是否需要创建图形上下文(需要硬件渲染支持)?
如何在没有 GLUT/x11 的 Linux 服务器上创建图形上下文?
Framebuffer 对象 - 它是否适合我的任务以及图形上下文是否是必需的?
解决这个问题最有效的方法是什么(渲染需要硬件支持)。
不是一个重要的问题,但是:
像素缓冲区对象。我打算用它来提高 GPU 内存的读取性能。它在我的任务中是否有利可图?【问题讨论】:
相关:***.com/questions/3191978/… 【参考方案1】:您需要修改您的程序以使用 OSMesa - 它是 Mesa 用于软件渲染的“空显示”驱动程序。考虑这个几乎重复问题的答案作为开始:
https://***.com/a/8442800/2702398
有关完整示例,您可以查看 Mesa 发行版中的示例,例如:http://cgit.freedesktop.org/mesa/demos/tree/src/osdemos/osdemo.c
更新
VirtualGL (http://www.virtualgl.org) 似乎支持 OpenGL/GLX 协议的远程渲染,并通过 VNC 向客户端提供渲染的像素图(因此,可以轻松地将 VNC 头部虚拟化)。
【讨论】:
但如果我正确理解没有硬件加速:...“独立 Mesa 是 Mesa 的原始化身。在运行 X Window System 的系统上,它通过 Xlib API 完成所有渲染:支持GLX API,但实际上只是模拟真实的东西。不支持GLX有线协议,X服务器没有加载OpenGL扩展。没有硬件加速。OpenGL库,libGL.so,包含所有内容(编程 API、GLX 函数和所有渲染代码)。”... virtualgl.org/About/Background 呢?它似乎完全符合您的要求:远程 GLX 加速渲染服务器。 感谢您的想法。我会检查的。我的主要目标:性能(渲染和数据传输)。【参考方案2】:如果您想使用完整的 OpenGL 规范,请使用 X11 创建上下文。这是一个教程,展示了如何做到这一点: http://arrayfire.com/remote-off-screen-rendering-with-opengl/
【讨论】:
张贴链接有利于提供背景信息,但您也应该总结链接的内容。如果链接断开,答案应该仍然有用。以上是关于远程离屏渲染(Linux / 无 GUI)的主要内容,如果未能解决你的问题,请参考以下文章