| <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/osdemo/</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> |