| <!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> | |
| <h1>Off-screen Rendering</h1> | |
| <p> | |
| Mesa's off-screen rendering interface is used for rendering into | |
| user-allocated blocks of memory. | |
| That is, the GL_FRONT colorbuffer is actually a buffer in main memory, | |
| rather than a window on your display. | |
| There are no window system or operating system dependencies. | |
| One potential application is to use Mesa as an off-line, batch-style renderer. | |
| </p> | |
| <p> | |
| The <b>OSMesa</b> 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> | |
| There are several examples of OSMesa in the <code>progs/osdemos/</code> | |
| directory. | |
| </p> | |
| <h2>Deep color channels</h2> | |
| <p> | |
| For some applications 8-bit color channels don't have sufficient | |
| precision. | |
| OSMesa supports 16-bit and 32-bit color channels through the OSMesa interface. | |
| When using 16-bit channels, channels are GLushorts and RGBA pixels occupy | |
| 8 bytes. | |
| When using 32-bit channels, channels are GLfloats and RGBA pixels occupy | |
| 16 bytes. | |
| </p> | |
| <p> | |
| Before version 6.5.1, Mesa had to be recompiled to support exactly | |
| one of 8, 16 or 32-bit channels. | |
| With Mesa 6.5.1, Mesa can be compiled for either 8, 16 or 32-bit channels | |
| and render into any of the smaller size channels. | |
| For example, if Mesa's compiled for 32-bit channels, you can also render | |
| 16 and 8-bit channel images. | |
| </p> | |
| <p> | |
| To build Mesa/OSMesa for 16 and 8-bit color channel support: | |
| <pre> | |
| make realclean | |
| make linux-osmesa16 | |
| </pre> | |
| <p> | |
| To build Mesa/OSMesa for 32, 16 and 8-bit color channel support: | |
| <pre> | |
| make realclean | |
| make linux-osmesa32 | |
| </pre> | |
| <p> | |
| You'll wind up with a library named libOSMesa16.so or libOSMesa32.so. | |
| Otherwise, most Mesa configurations build an 8-bit/channel libOSMesa.so library | |
| by default. | |
| </p> | |
| <p> | |
| If performance is important, compile Mesa for the channel size you're | |
| most interested in. | |
| </p> | |
| <p> | |
| If you need to compile on a non-Linux platform, copy Mesa/configs/linux-osmesa16 | |
| to a new config file and edit it as needed. Then, add the new config name to | |
| the top-level Makefile. Send a patch to the Mesa developers too, if you're | |
| inclined. | |
| </p> | |
| </body> | |
| </html> |