<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Off-screen Rendering</title> <link rel="stylesheet" type="text/css" href="mesa.css"> </head> <body> <div class="header"> <h1>The Mesa 3D Graphics Library</h1> </div> <iframe src="contents.html"></iframe> <div class="content"> <h1>Off-screen Rendering</h1> <p> Mesa's off-screen interface is used for rendering into user-allocated memory without any sort of window system or operating system dependencies. That is, the GL_FRONT colorbuffer is actually a buffer in main memory, rather than a window on your display. </p> <p> The OSMesa API provides three basic functions for making off-screen renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for more information about the API functions. </p> <p> The OSMesa interface may be used with any of three software renderers: </p> <ol> <li>llvmpipe - this is the high-performance Gallium LLVM driver <li>softpipe - this it the reference Gallium software driver <li>swrast - this is the legacy Mesa software rasterizer </ol> <p> There are several examples of OSMesa in the mesa/demos repository. </p> <h1>Building OSMesa</h1> <p> Configure and build Mesa with something like: <pre> configure --enable-osmesa --disable-driglx-direct --disable-dri --with-gallium-drivers=swrast make </pre> <p> Make sure you have LLVM installed first if you want to use the llvmpipe driver. </p> <p> When the build is complete you should find: </p> <pre> lib/libOSMesa.so (swrast-based OSMesa) lib/gallium/libOSMsea.so (gallium-based OSMesa) </pre> <p> Set your LD_LIBRARY_PATH to point to one directory or the other to select the library you want to use. </p> <p> When you link your application, link with -lOSMesa </p> </div> </body> </html>