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.