1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html lang="en"> 3<head> 4 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>Off-screen Rendering</title> 6 <link rel="stylesheet" type="text/css" href="mesa.css"> 7</head> 8<body> 9 10<h1>Off-screen Rendering</h1> 11 12 13<p> 14Mesa's off-screen rendering interface is used for rendering into 15user-allocated blocks of memory. 16That is, the GL_FRONT colorbuffer is actually a buffer in main memory, 17rather than a window on your display. 18There are no window system or operating system dependencies. 19One potential application is to use Mesa as an off-line, batch-style renderer. 20</p> 21 22<p> 23The <b>OSMesa</b> API provides three basic functions for making off-screen 24renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and 25OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for 26more information about the API functions. 27</p> 28 29<p> 30There are several examples of OSMesa in the <code>progs/osdemos/</code> 31directory. 32</p> 33 34 35<h2>Deep color channels</h2> 36 37<p> 38For some applications 8-bit color channels don't have sufficient 39precision. 40OSMesa supports 16-bit and 32-bit color channels through the OSMesa interface. 41When using 16-bit channels, channels are GLushorts and RGBA pixels occupy 428 bytes. 43When using 32-bit channels, channels are GLfloats and RGBA pixels occupy 4416 bytes. 45</p> 46 47<p> 48Before version 6.5.1, Mesa had to be recompiled to support exactly 49one of 8, 16 or 32-bit channels. 50With Mesa 6.5.1, Mesa can be compiled for either 8, 16 or 32-bit channels 51and render into any of the smaller size channels. 52For example, if Mesa's compiled for 32-bit channels, you can also render 5316 and 8-bit channel images. 54</p> 55 56<p> 57To build Mesa/OSMesa for 16 and 8-bit color channel support: 58<pre> 59 make realclean 60 make linux-osmesa16 61</pre> 62 63<p> 64To build Mesa/OSMesa for 32, 16 and 8-bit color channel support: 65<pre> 66 make realclean 67 make linux-osmesa32 68</pre> 69 70<p> 71You'll wind up with a library named libOSMesa16.so or libOSMesa32.so. 72Otherwise, most Mesa configurations build an 8-bit/channel libOSMesa.so library 73by default. 74</p> 75 76<p> 77If performance is important, compile Mesa for the channel size you're 78most interested in. 79</p> 80 81<p> 82If you need to compile on a non-Linux platform, copy Mesa/configs/linux-osmesa16 83to a new config file and edit it as needed. Then, add the new config name to 84the top-level Makefile. Send a patch to the Mesa developers too, if you're 85inclined. 86</p> 87 88</body> 89</html> 90