2014-09-01 88 views
0

我想设置无窗口OpenGL渲染。我正在关注these instructions“仅限离屏渲染”。未能设置GLXContext

的代码就在这里失败:

/* 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。

我应该提到,我ssh'ing到一个没有-X选项的AWS ubuntu 12.04机器(我应该吗?)我也有一个VNC服务器运行,我通过SSH隧道进入。我曾尝试接受的解决方案,以this question,即改变DISPLAY环境变量,但仍然不能正常工作:

$ export DISPLAY=:0 
$ ./testglXContext 
No protocol specified 
No protocol specified 
No protocol specified 
No protocol specified 
Failed to open display 
$ 

我该怎么办?

+0

在你用'dpy'做任何事情之前,你不检查'dpy!= NULL'吗? – 2014-09-01 17:15:59

+0

@n.m .:无关紧要AWS实例通常没有运行X服务器。没有X服务器没有GLX。顺便说一句,这是短暂的第二次,我看到你给予的不仅仅是无益,而是实际上误导了评论或建议。请不要发布“建议”,也不要100%确定您了解问题。 – datenwolf 2014-09-01 18:01:54

+0

@datenwolf我没有给这个OP任何建议,只是问了一个关于编码实践的简单问题。请非常确定我确实了解AWS实例是什么。 – 2014-09-01 18:10:02

回答

2

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

请注意,在AWS机器上,除GPU GPU实例外,您通常没有完整的GPU;我不确定你是否可以在这些服务器上运行X服务器。如果你想渲染离屏,可以使用OpenGL光栅软件的性能,你可能想看看OSMesa http://www.mesa3d.org/osmesa.html