| <HTML> | |
| <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> |