| <!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"> |
| The Mesa 3D Graphics Library |
| </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> |
| |
| <h2>Building OSMesa</h2> |
| |
| <p> |
| Configure and build Mesa with something like: |
| |
| <pre> |
| meson builddir -Dosmesa=gallium -Dgallium-drivers=swrast -Ddri-drivers=[] -Dvulkan-drivers=[] -Dprefix=$PWD/builddir/install |
| ninja -C builddir install |
| </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> |
| $PWD/builddir/install/lib/libOSMesa.so (swrast-based OSMesa) |
| $PWD/builddir/install/lib/gallium/libOSMsea.so (gallium-based OSMesa) |
| </pre> |
| |
| <p> |
| Set your LD_LIBRARY_PATH to point to $PWD/builddir/install to use the libraries |
| </p> |
| |
| <p> |
| When you link your application, link with -lOSMesa |
| </p> |
| |
| </div> |
| </body> |
| </html> |