http://www.starnet.com/xwin32kb/Couldnt_get_an_RGB_Double_buffered_Visual

When running an OpenGL application, the app may fail with the following error

"Error: couldn't get an RGB, Double-buffered visual"

Newer versions of the GLX library favor direct software rendering over accelerated indirect rendering. When using OpenGL it's best to set the environment variable in the startup scripts.

Adding the command "export LIBGL_ALWAYS_INDIRECT=1" forces indirect rendering to be used.

Appending "export LIBGL_ALWAYS_INDIRECT=1" to $HOME/.bashrc sets the variable on every login

 

http://x.cygwin.com/docs/ug/using-aiglx.html

http://unix.stackexchange.com/questions/1437/what-does-libgl-always-indirect-1-actually-do

 

http://en.wikipedia.org/wiki/Direct_Rendering_Infrastructure

 

http://www.xfree86.org/current/DRI8.html

8.5. glxinfo

glxinfo is a useful program for checking which version of libGL you're using as well as which DRI-based driver. Simply type ​​glxinfo​​ and examine the OpenGL vendor, renderer, and version lines. Among the output you should see something like this:

OpenGL vendor string: VA Linux Systems, Inc.
OpenGL renderer string: Mesa DRI Voodoo3 20000224
OpenGL version string: 1.2 Mesa 3.4


or this:

OpenGL vendor string: VA Linux Systems, Inc.
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 Mesa 3.4


The first example indicates that the 3dfx driver is using Voodoo3 hardware. The second example indicates that no hardware driver was found and indirect, unaccelerated rendering is being used.

第一个表示有硬件加速,第二个表示没有

If you see that indirect rendering is being used when direct rendering was expected, proceed to the troubleshooting section.

​glxinfo​​ also lists all of the GLX-enhanced visuals available so you can determine which visuals are double-buffered, have depth (Z) buffers, stencil buffers, accumulation buffers, etc.