Opengl freeglut(/光):错误:内部错误<;未找到具有必要功能的FBConfig>;在函数fgOpenWindow中

Opengl freeglut(/光):错误:内部错误<;未找到具有必要功能的FBConfig>;在函数fgOpenWindow中,opengl,x11,glut,freeglut,Opengl,X11,Glut,Freeglut,我在Linux服务器(Ubuntu16.04)中安装了OpenGL,没有图形界面,安装命令如下: apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev apt-get install freeglut3-dev libglew1.10 libglew-dev libgl1-mesa-glx libxmu-dev apt-get install libglew-dev libsdl2-dev libsdl2-image-d

我在Linux服务器(Ubuntu16.04)中安装了OpenGL,没有图形界面,安装命令如下:

apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
apt-get install freeglut3-dev libglew1.10 libglew-dev libgl1-mesa-glx libxmu-dev
apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
apt-get install mesa-utils
现在,我通过
gcc light.c-o light-lGL-lglut
编译
light.c

我想通过XMing服务器在我的Windows mechine中显示它。

代码:

glxdemo
glxgears
glxheads
也不错

当我运行
Xlib
代码时,它很好。编译是通过gcc-o quad-quad.c-lX11-lGL-lGLU进行的

// -- Written in C -- //

#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
#include<GL/glu.h>

Display                 *dpy;
Window                  root;
GLint                   att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
XVisualInfo             *vi;
Colormap                cmap;
XSetWindowAttributes    swa;
Window                  win;
GLXContext              glc;
XWindowAttributes       gwa;
XEvent                  xev;

void DrawAQuad() {
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1., 1., -1., 1., 1., 20.);

 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(0., 0., 10., 0., 0., 0., 0., 1., 0.);

 glBegin(GL_QUADS);
  glColor3f(1., 0., 0.); glVertex3f(-.75, -.75, 0.);
  glColor3f(0., 1., 0.); glVertex3f( .75, -.75, 0.);
  glColor3f(0., 0., 1.); glVertex3f( .75,  .75, 0.);
  glColor3f(1., 1., 0.); glVertex3f(-.75,  .75, 0.);
 glEnd();
} 

int main(int argc, char *argv[]) {

 dpy = XOpenDisplay(NULL);

 if(dpy == NULL) {
        printf("\n\tcannot connect to X server\n\n");
        exit(0);
 }

 root = DefaultRootWindow(dpy);

 vi = glXChooseVisual(dpy, 0, att);

 if(vi == NULL) {
        printf("\n\tno appropriate visual found\n\n");
        exit(0);
 } 
 else {
        printf("\n\tvisual %p selected\n", (void *)vi->visualid); /* %p creates hexadecimal output like in glxinfo */
 }


 cmap = XCreateColormap(dpy, root, vi->visual, AllocNone);

 swa.colormap = cmap;
 swa.event_mask = ExposureMask | KeyPressMask;

 win = XCreateWindow(dpy, root, 0, 0, 600, 600, 0, vi->depth, InputOutput, vi->visual, CWColormap | CWEventMask, &swa);

 XMapWindow(dpy, win);
 XStoreName(dpy, win, "VERY SIMPLE APPLICATION");

 glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
 glXMakeCurrent(dpy, win, glc);

 glEnable(GL_DEPTH_TEST); 

 while(1) {
        XNextEvent(dpy, &xev);

        if(xev.type == Expose) {
                XGetWindowAttributes(dpy, win, &gwa);
                glViewport(0, 0, gwa.width, gwa.height);
                DrawAQuad(); 
                glXSwapBuffers(dpy, win);
        }

        else if(xev.type == KeyPress) {
                glXMakeCurrent(dpy, None, NULL);
                glXDestroyContext(dpy, glc);
                XDestroyWindow(dpy, win);
                XCloseDisplay(dpy);
                exit(0);
        }
    } /* this closes while(1) { */
} /* this is the } which closes int main(int argc, char *argv[]) { */
/--用C编写--//
#包括
#包括
#包括
#包括
#包括
#包括
#包括
显示*dpy;
窗根;
GLint att[]={GLX_RGBA,GLX_DEPTH_SIZE,24,GLX_DOUBLEBUFFER,None};
十六、苏亚林福六世;
彩色地图;
XSETWINDOWATTES swa;
窗口赢;
GLXContext-glc;
xgwa;
XEvent-xev;
void DrawAQuad(){
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glMatrixMode(GL_投影);
glLoadIdentity();
格洛托(-1,1.,-1,1,1,20.);
glMatrixMode(GLU模型视图);
glLoadIdentity();
gluLookAt(0,0,10,0,0,0,0,0,1,0.);
glBegin(GL_QUADS);
glColor3f(1,0,0.);glVertex3f(-.75,-.75,0.);
glColor3f(0,1,0.);glVertex3f(.75,-.75,0.);
glColor3f(0,0,1.);glVertex3f(.75,75,0.);
glColor3f(1,1,0.);glVertex3f(-0.75,75,0.);
格伦德();
} 
int main(int argc,char*argv[]){
dpy=XOpenDisplay(空);
如果(dpy==NULL){
printf(“\n\t无法连接到X服务器\n\n”);
出口(0);
}
根=默认根窗口(dpy);
vi=glXChooseVisual(dpy,0,att);
如果(vi==NULL){
printf(“\n\t未找到适当的视觉效果\n\n”);
出口(0);
} 
否则{
printf(“\n\tvisual%p selected\n”,(void*)vi->visualid);/*%p创建十六进制输出,与glxinfo类似*/
}
cmap=XCreateColormap(dpy、root、vi->visual、allocOne);
swa.colormap=cmap;
swa.event_mask=ExposureMask |按键mask;
win=XCreateWindow(dpy、根、0、0、600、600、0、vi->深度、输入输出、vi->可视、CWColormap | CWEventMask和swa);
XMapWindow(dpy,win);
XStoreName(dpy,win,“非常简单的应用程序”);
glc=glXCreateContext(dpy,vi,NULL,GL_TRUE);
glXMakeCurrent(dpy、win、glc);
glEnable(GLU深度试验);
而(1){
XNextEvent(dpy和xev);
if(xev.type==Expose){
XGetWindowAttributes(dpy、win和gwa);
glViewport(0,0,gwa.width,gwa.height);
DrawAQuad();
glXSwapBuffers(dpy,win);
}
else if(xev.type==按键){
glXMakeCurrent(dpy,无,空);
glXDestroyContext(dpy,glc);
XDestroyWindow(dpy,win);
XCloseDisplay(dpy);
出口(0);
}
}/*当(1){*/
}/*这是关闭int main的}(int argc,char*argv[]){*/
我该怎么办

谢谢

direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
确保您没有与以下内容发生冲突:

2.4.06不会从ubuntu客户端在远程X服务器上渲染

Ubuntu现在似乎正在使用freeglut,当它在本地显示上呈现ok时,它无法通过GLX在远程显示上绘制。可能它没有获得有效的上下文,因为glGetString(GLUT版本)返回null。但是glutGet(GLUT显示模式)是可能的返回true,并且glxgears和glxinfo都工作正常,因此这似乎是一个freelut问题


嗯,您的xlib代码要求双缓冲,而您的GLUT代码只需要单缓冲。谢谢您的回复。我将我的代码从
glutInitDisplayMode(GLUT|single | GLUT|RGB | GLUT|深度);
更改为
glutInitDisplayMode(GLUT|双| GLUT| RGBA | GLUT|深度)
:错误:函数fgOpenWindow出现内部错误。请尝试调用
glutInitDisplayMode(0)
而不是所有这些参数,然后查看得到的结果。也请尝试
glutInitDisplayMode(GLUT\U INDEX)
。感谢您的回复。我运行了演示代码,但得到了不同的结果。
GLUT\U DISPLAYMODE\U可能=0
免费GLUT(/测试):错误:函数fgOpenWindow中的内部错误
谢谢,当我在Ubuntu16.04(nvidia jetson tx2)上运行zed mini-stereolabs位置跟踪演示时,这个错误(X over ssh)就是我遇到的。它在本地工作,但不是远程工作,导致标题中的错误。
name of display: :10.0
display: :10  screen: 0
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_visual_info, 
    GLX_EXT_visual_rating, GLX_OML_swap_method, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_hyperpipe, GLX_SGIX_swap_barrier, 
    GLX_SGI_make_current_read
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
client glx extensions:
    GLX_ARB_context_flush_control, GLX_ARB_create_context, 
    GLX_ARB_create_context_profile, GLX_ARB_create_context_robustness, 
    GLX_ARB_fbconfig_float, GLX_ARB_get_proc_address, GLX_ARB_multisample, 
    GLX_EXT_buffer_age, GLX_EXT_create_context_es2_profile, 
    GLX_EXT_create_context_es_profile, GLX_EXT_fbconfig_packed_float, 
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context, GLX_EXT_stereo_tree, 
    GLX_EXT_swap_control, GLX_EXT_swap_control_tear, 
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating, 
    GLX_NV_copy_buffer, GLX_NV_copy_image, GLX_NV_delay_before_swap, 
    GLX_NV_float_buffer, GLX_NV_multisample_coverage, GLX_NV_present_video, 
    GLX_NV_robustness_video_memory_purge, GLX_NV_swap_group, 
    GLX_NV_video_capture, GLX_NV_video_out, GLX_SGIX_fbconfig, 
    GLX_SGIX_pbuffer, GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.2
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 705/PCIe/SSE2
OpenGL version string: 1.2 (4.5.0 NVIDIA 368.39)
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_imaging, GL_ARB_multitexture, 
    GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow, 
    GL_ARB_texture_border_clamp, GL_ARB_texture_cube_map, 
    GL_ARB_texture_env_add, GL_ARB_texture_env_combine, 
    GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3, 
    GL_ARB_texture_mirrored_repeat, GL_ARB_transpose_matrix, 
    GL_ARB_window_pos, GL_ATI_texture_mirror_once, GL_EXT_abgr, GL_EXT_bgra, 
    GL_EXT_blend_color, GL_EXT_blend_func_separate, GL_EXT_blend_minmax, 
    GL_EXT_blend_subtract, GL_EXT_draw_range_elements, GL_EXT_fog_coord, 
    GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels, GL_EXT_rescale_normal, 
    GL_EXT_secondary_color, GL_EXT_separate_specular_color, 
    GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap, 
    GL_EXT_texture3D, GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, GL_EXT_texture_lod, 
    GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_vertex_array, 
    GL_IBM_texture_mirrored_repeat, GL_NV_blend_square, GL_NV_point_sprite, 
    GL_NV_texgen_reflection, GL_NV_texture_rectangle, GL_SGIS_generate_mipmap, 
    GL_SGIS_texture_lod, GL_SGIX_depth_texture, GL_SGIX_shadow

32 GLX Visuals
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x022 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x023 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0  0  0 16 16 16 16  0 0 None
0x024 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0  0  8  0  0  0  0  0 0 None
0x025 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0  0  8 16 16 16 16  0 0 None
0x026 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x027 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0  0  0 16 16 16 16  0 0 None
0x028 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0  0  8  0  0  0  0  0 0 None
0x029 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0  0  8 16 16 16 16 1172601720 0 None
0x02a 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2  0  0  0  0  0  0  1 4 None
0x02b 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2  0  0 16 16 16 16  0 0 None
0x02c 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2  0  8  0  0  0  0 26272464 0 None
0x02d 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2  0  8 16 16 16 16 26259104 0 None
0x02e 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2  0  0  0  0  0  0  0 0 None
0x02f 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2  0  0 16 16 16 16 32 0 None
0x030 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2  0  8  0  0  0  0  0 0 None
0x031 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2  0  8 16 16 16 16  0 0 None
0x032 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x033 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0 24  0 16 16 16 16  0 0 None
0x034 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0 24  8  0  0  0  0 26262256 1 None
0x035 24 tc  1  24  0 r  . .   8  8  8  0 .  .  0 24  8 16 16 16 16 26259056 0 None
0x036 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x037 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0 24  0 16 16 16 16  0 0 None
0x038 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x039 24 tc  1  24  0 r  y .   8  8  8  0 .  .  0 24  8 16 16 16 16  0 0 None
0x03a 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2 24  0  0  0  0  0  0 0 None
0x03b 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2 24  0 16 16 16 16  0 0 None
0x03c 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2 24  8  0  0  0  0  0 0 None
0x03d 24 tc  1  24  0 r  . .   8  8  8  0 .  .  2 24  8 16 16 16 16  0 0 None
0x03e 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2 24  0  0  0  0  0  0 0 None
0x03f 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2 24  0 16 16 16 16  0 0 None
0x040 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2 24  8  0  0  0  0  0 0 None
0x041 24 tc  1  24  0 r  y .   8  8  8  0 .  .  2 24  8 16 16 16 16  0 0 None

32 GLXFBConfigs:
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x022 24 tc  1  24  0    . .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x023 24 tc  1  24  0    . .   8  8  8  0 .  .  0  0  0 16 16 16 16  0 0 None
0x024 24 tc  1  24  0    . .   8  8  8  0 .  .  0  0  8  0  0  0  0  0 0 None
0x025 24 tc  1  24  0    . .   8  8  8  0 .  .  0  0  8 16 16 16 16  0 0 None
0x026 24 tc  1  24  0    y .   8  8  8  0 .  .  0  0  0  0  0  0  0  0 0 None
0x027 24 tc  1  24  0    y .   8  8  8  0 .  .  0  0  0 16 16 16 16  0 0 None
0x028 24 tc  1  24  0    y .   8  8  8  0 .  .  0  0  8  0  0  0  0  0 0 None
0x029 24 tc  1  24  0    y .   8  8  8  0 .  .  0  0  8 16 16 16 16  0 0 None
0x02a 24 tc  1  24  0    . .   8  8  8  0 .  .  2  0  0  0  0  0  0  0 0 None
0x02b 24 tc  1  24  0    . .   8  8  8  0 .  .  2  0  0 16 16 16 16  0 0 None
0x02c 24 tc  1  24  0    . .   8  8  8  0 .  .  2  0  8  0  0  0  0  0 0 None
0x02d 24 tc  1  24  0    . .   8  8  8  0 .  .  2  0  8 16 16 16 16  0 0 None
0x02e 24 tc  1  24  0    y .   8  8  8  0 .  .  2  0  0  0  0  0  0  0 0 None
0x02f 24 tc  1  24  0    y .   8  8  8  0 .  .  2  0  0 16 16 16 16  0 0 None
0x030 24 tc  1  24  0    y .   8  8  8  0 .  .  2  0  8  0  0  0  0  0 0 None
0x031 24 tc  1  24  0    y .   8  8  8  0 .  .  2  0  8 16 16 16 16  0 0 None
0x032 24 tc  1  24  0    . .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x033 24 tc  1  24  0    . .   8  8  8  0 .  .  0 24  0 16 16 16 16  0 0 None
0x034 24 tc  1  24  0    . .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x035 24 tc  1  24  0    . .   8  8  8  0 .  .  0 24  8 16 16 16 16  0 0 None
0x036 24 tc  1  24  0    y .   8  8  8  0 .  .  0 24  0  0  0  0  0  0 0 None
0x037 24 tc  1  24  0    y .   8  8  8  0 .  .  0 24  0 16 16 16 16  0 0 None
0x038 24 tc  1  24  0    y .   8  8  8  0 .  .  0 24  8  0  0  0  0  0 0 None
0x039 24 tc  1  24  0    y .   8  8  8  0 .  .  0 24  8 16 16 16 16  0 0 None
0x03a 24 tc  1  24  0    . .   8  8  8  0 .  .  2 24  0  0  0  0  0  0 0 None
0x03b 24 tc  1  24  0    . .   8  8  8  0 .  .  2 24  0 16 16 16 16  0 0 None
0x03c 24 tc  1  24  0    . .   8  8  8  0 .  .  2 24  8  0  0  0  0  0 0 None
0x03d 24 tc  1  24  0    . .   8  8  8  0 .  .  2 24  8 16 16 16 16  0 0 None
0x03e 24 tc  1  24  0    y .   8  8  8  0 .  .  2 24  0  0  0  0  0  0 0 None
0x03f 24 tc  1  24  0    y .   8  8  8  0 .  .  2 24  0 16 16 16 16  0 0 None
0x040 24 tc  1  24  0    y .   8  8  8  0 .  .  2 24  8  0  0  0  0  0 0 None
0x041 24 tc  1  24  0    y .   8  8  8  0 .  .  2 24  8 16 16 16 16  0 0 None
// -- Written in C -- //

#include<stdio.h>
#include<stdlib.h>
#include<X11/X.h>
#include<X11/Xlib.h>
#include<GL/gl.h>
#include<GL/glx.h>
#include<GL/glu.h>

Display                 *dpy;
Window                  root;
GLint                   att[] = { GLX_RGBA, GLX_DEPTH_SIZE, 24, GLX_DOUBLEBUFFER, None };
XVisualInfo             *vi;
Colormap                cmap;
XSetWindowAttributes    swa;
Window                  win;
GLXContext              glc;
XWindowAttributes       gwa;
XEvent                  xev;

void DrawAQuad() {
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1., 1., -1., 1., 1., 20.);

 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(0., 0., 10., 0., 0., 0., 0., 1., 0.);

 glBegin(GL_QUADS);
  glColor3f(1., 0., 0.); glVertex3f(-.75, -.75, 0.);
  glColor3f(0., 1., 0.); glVertex3f( .75, -.75, 0.);
  glColor3f(0., 0., 1.); glVertex3f( .75,  .75, 0.);
  glColor3f(1., 1., 0.); glVertex3f(-.75,  .75, 0.);
 glEnd();
} 

int main(int argc, char *argv[]) {

 dpy = XOpenDisplay(NULL);

 if(dpy == NULL) {
        printf("\n\tcannot connect to X server\n\n");
        exit(0);
 }

 root = DefaultRootWindow(dpy);

 vi = glXChooseVisual(dpy, 0, att);

 if(vi == NULL) {
        printf("\n\tno appropriate visual found\n\n");
        exit(0);
 } 
 else {
        printf("\n\tvisual %p selected\n", (void *)vi->visualid); /* %p creates hexadecimal output like in glxinfo */
 }


 cmap = XCreateColormap(dpy, root, vi->visual, AllocNone);

 swa.colormap = cmap;
 swa.event_mask = ExposureMask | KeyPressMask;

 win = XCreateWindow(dpy, root, 0, 0, 600, 600, 0, vi->depth, InputOutput, vi->visual, CWColormap | CWEventMask, &swa);

 XMapWindow(dpy, win);
 XStoreName(dpy, win, "VERY SIMPLE APPLICATION");

 glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
 glXMakeCurrent(dpy, win, glc);

 glEnable(GL_DEPTH_TEST); 

 while(1) {
        XNextEvent(dpy, &xev);

        if(xev.type == Expose) {
                XGetWindowAttributes(dpy, win, &gwa);
                glViewport(0, 0, gwa.width, gwa.height);
                DrawAQuad(); 
                glXSwapBuffers(dpy, win);
        }

        else if(xev.type == KeyPress) {
                glXMakeCurrent(dpy, None, NULL);
                glXDestroyContext(dpy, glc);
                XDestroyWindow(dpy, win);
                XCloseDisplay(dpy);
                exit(0);
        }
    } /* this closes while(1) { */
} /* this is the } which closes int main(int argc, char *argv[]) { */
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)