blob: 6ed3c5e710d2375f213bb081c6c5b1857bca1b16 [file] [log] [blame]
Brian Paul0b27ace2003-03-08 17:38:57 +00001<HTML>
2
3<TITLE>Off-screen Rendering</TITLE>
4
5<BODY text="#000000" bgcolor="#55bbff" link="#111188">
6
7<H1>Off-screen Rendering</H1>
8
9
10<p>
11Mesa 1.2.4 introduced off-screen rendering, a facility for generating
123-D imagery without having to open a window on your display. Mesa's
13simple off-screen rendering interface is completely operating system
14and window system independent so programs which use off-screen
15rendering should be very portable. This feature effectively
16enables you to use Mesa as an off-line, batch-oriented renderer.
17</p>
18<p>
19The "OSMesa" API provides 3 functions for making off-screen
20renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and
21OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for
22more information. See the demos/osdemo.c file for an example program.
23There is no facility for writing images to files. That's up to you.
24</p>
25<p>
26If you want to generate large images (larger than 1280x1024) you'll
27have to edit the src/config.h file to change MAX_WIDTH and MAX_HEIGHT
28then recompile Mesa. Image size should only be limited by available
29memory.
30</p>
31
32
33<H2>Deep color channels</H2>
34
35<p>
36 For some applications 8-bit color channels don't have sufficient
37 accuracy (film and IBR, for example). If you're in this situation
38 you'll be happy to know that Mesa supports 16-bit and 32-bit color
39 channels through the OSMesa interface. When using 16-bit channels,
Brian Paul7357f202003-05-02 15:05:02 +000040 channels are GLushorts and RGBA pixels occupy 8 bytes. When using 32-bit
41 channels, channels are GLfloats and RGBA pixels occupy 16 bytes.
Brian Paul0b27ace2003-03-08 17:38:57 +000042</p>
43<p>
44 To build Mesa/OSMesa with 16-bit color channels:
45<pre>
Brian Paul58be9e62004-09-24 20:31:02 +000046 make realclean
47 make linux-osmesa16
Brian Paul0b27ace2003-03-08 17:38:57 +000048</pre>
49
50 For 32-bit channels:
51<pre>
Brian Paul58be9e62004-09-24 20:31:02 +000052 make realclean
53 make linux-osmesa32
Brian Paul0b27ace2003-03-08 17:38:57 +000054</pre>
55
56<p>
Brian Paul7357f202003-05-02 15:05:02 +000057You'll wind up with a library named libOSMesa16.so or libOSMesa32.so.
58</p>
59
60<p>
Brian Paul58be9e62004-09-24 20:31:02 +000061If you need to compile on a non-Linux platform, copy Mesa/configs/linux-osmesa16
62to a new config file and edit it as needed. Then, add the new config name to
63the top-level Makefile. Send a patch to the Mesa developers too, if you're
64inclined.
Brian Paul0b27ace2003-03-08 17:38:57 +000065</p>
Brian Paul58be9e62004-09-24 20:31:02 +000066
Brian Paul0b27ace2003-03-08 17:38:57 +000067<p>
68BE WARNED: 16 and 32-bit channel support has not been exhaustively
69tested and there may be some bugs. However, a number of people have
70been using this feature successfully so it can't be too broken.
71</p>
72
73
74</BODY>
75</HTML>