#### 15.4.8.2 Hardware vs Software Rendering ¶

On some platforms, it is possible to choose between hardware (GPU-accelerated) and software (CPU-based) OpenGL rendering through the use of the Mesa 3D software implementation. The choice between hardware or software rendering only affects the OpenGL graphics toolkits (`"qt"`, `"fltk"`). Using software rendering can avoid rendering and printing issues due to the imperfect OpenGL driver implementations of diverse graphic cards from different vendors (notably integrated Intel graphics). The downside is that software rendering may be considerably slower than hardware-accelerated rendering.

On Linux and MacOS systems that have a Mesa 3-D based driver, switching to software rendering is done at Octave startup (or at least before any graphics function has been called) by setting the environment variable `LIBGL_ALWAYS_SOFTWARE`, e.g., `setenv ("LIBGL_ALWAYS_SOFTWARE", "1")`.

On Windows, Octave is shipped with `opengl32.dll`, a Mesa 3-D based software rendering library. When using the Windows installer for Octave, the user has the option to select between `"System OpenGL"` and `"Software OpenGL"` renderers. The OpenGL driver may also be switched later using the `"OpenGL Switcher"` application from the Start menu while Octave is closed. Alternatively, one can rename the following file while Octave is closed:

`octave-home\bin\opengl32.dll`

where octave-home is the directory returned by `OCTAVE_HOME`, i.e., the directory in which Octave is installed (the default is `C:\Program Files\GNU Octave\Octave\Octave-version\mingw64`). Change the file extension to `.bak` for hardware rendering or to `.dll` for software rendering.