1

情况如下: 有一个远程Linux服务器(无GUI),构建OpenGL场景。目标:将生成的图像传输到客户端 Windows 机器我无法理解屏幕外渲染的一些东西,阅读了很多文献,但仍然不太了解:使用 GLUT 意味着设置变量 DISPLAY。如果我正确理解意味着通过 x11 进行远程渲染。如果我在 Windows(XWin 服务器)机器上运行 x11 服务器,一切正常。如果我尝试在不渲染服务器的情况下运行,则:freeglut (./WFWorkspace): failed to open display 'localhost: 11.0'。反正x11不合适。

  1. 我是否需要创建图形上下文(需要硬件渲染支持)?

  2. 如何在没有 GLUT/x11 的 Linux 服务器上创建图形上下文?

  3. Framebuffer 对象——它是否适合我的任务以及它是否需要图形上下文?

  4. 解决这个问题最有效的方法是什么(渲染需要硬件支持)。

不是一个重要的问题,但尽管如此:

  • 像素缓冲区对象。我打算用它来提高 GPU 内存的读取性能。在我的任务中是否有利可图?
4

2 回答 2

4

您需要修改您的程序以使用 OSMesa——它是 Mesa 用于软件渲染的“空显示”驱动程序。考虑这个几乎重复问题的答案作为开始:

https://stackoverflow.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 头部可以轻松地虚拟化)。

于 2013-12-04T04:23:23.520 回答
1

如果您想使用完整的 OpenGL 规范,请使用 X11 创建上下文。这是一个教程,展示了如何做到这一点: http: //arrayfire.com/remote-off-screen-rendering-with-opengl/

于 2014-07-29T17:08:13.733 回答