我正在尝试设置无窗口的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 -X
或ssh -YC
,因为那样只会将OpenGL操作路由到您的本地计算机。
请注意,在AWS机器上,除了GPU AWS实异常(exception),通常没有完整的GPU。我不确定您是否可以在这些服务器上实际运行X服务器。如果您想在屏幕外渲染,并且可以使用软件OpenGL光栅化器的性能,则可以查看OSMesa http://www.mesa3d.org/osmesa.html