我正在尝试设置无窗口的OpenGL渲染。我关注these instructions的“仅屏幕外渲染”。

代码在这里失败:

/* get framebuffer configs, any is usable (might want to add proper attribs) */
if ( !(fbc = glXChooseFBConfig(dpy, DefaultScreen(dpy), visual_attribs, &fbcount) ) ){
    fprintf(stderr, "Failed to get FBConfig\n");
    exit(1);
}
glXChooseFBConfig无法设置或检索FBConfig。

我应该提到的是,我没有使用-X选项而正在ssh进入AWS ubuntu 12.04计算机(应该吗?),我还运行着正在通过ssh隧道传输的VNC服务器。我已经尝试过对this question接受的解决方案,即更改DISPLAY env变量,但这仍然行不通:
$ export DISPLAY=:0
$ ./testglXContext
No protocol specified
No protocol specified
No protocol specified
No protocol specified
Failed to open display
$

我该怎么办?

最佳答案

要创建基于GLX的上下文,您需要运行X Server。没有X服务器,没有GLX,没有GLX,没有GLX上下文。不要使用ssh -Xssh -YC,因为那样只会将OpenGL操作路由到您的本地计算机。

请注意,在AWS机器上,除了GPU AWS实异常(exception),通常没有完整的GPU。我不确定您是否可以在这些服务器上实际运行X服务器。如果您想在屏幕外渲染,并且可以使用软件OpenGL光栅化器的性能,则可以查看OSMesa http://www.mesa3d.org/osmesa.html

10-07 23:06