]> git.jsancho.org Git - lugaru.git/blob - OpenGL/GL/osmesa.h
Renamed old Makefile, updated .hgignore, and made changes to png functions to remove...
[lugaru.git] / OpenGL / GL / osmesa.h
1 /* $Id: osmesa.h,v 1.5 2000/03/28 16:59:39 rjfrank Exp $ */
2
3 /*
4  * Mesa 3-D graphics library
5  * Version:  3.3
6  * 
7  * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
8  * 
9  * Permission is hereby granted, free of charge, to any person obtaining a
10  * copy of this software and associated documentation files (the "Software"),
11  * to deal in the Software without restriction, including without limitation
12  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13  * and/or sell copies of the Software, and to permit persons to whom the
14  * Software is furnished to do so, subject to the following conditions:
15  * 
16  * The above copyright notice and this permission notice shall be included
17  * in all copies or substantial portions of the Software.
18  * 
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
22  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25  */
26
27
28 /*
29  * Mesa Off-Screen rendering interface.
30  *
31  * This is an operating system and window system independent interface to
32  * Mesa which allows one to render images into a client-supplied buffer in
33  * main memory.  Such images may manipulated or saved in whatever way the
34  * client wants.
35  *
36  * These are the API functions:
37  *   OSMesaCreateContext - create a new Off-Screen Mesa rendering context
38  *   OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer
39  *                       and make the specified context the current one.
40  *   OSMesaDestroyContext - destroy an OSMesaContext
41  *   OSMesaGetCurrentContext - return thread's current context ID
42  *   OSMesaPixelStore - controls how pixels are stored in image buffer
43  *   OSMesaGetIntegerv - return OSMesa state parameters
44  *
45  *
46  * The limits on the width and height of an image buffer are MAX_WIDTH and
47  * MAX_HEIGHT as defined in Mesa/src/config.h.  Defaults are 1280 and 1024.
48  * You can increase them as needed but beware that many temporary arrays in
49  * Mesa are dimensioned by MAX_WIDTH or MAX_HEIGHT.
50  */
51
52
53 #ifndef OSMESA_H
54 #define OSMESA_H
55
56
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60
61
62 #include "GL/gl.h"
63
64
65 #define OSMESA_MAJOR_VERSION 3
66 #define OSMESA_MINOR_VERSION 3
67
68
69
70 /*
71  * Values for the format parameter of OSMesaCreateContext()
72  * New in version 2.0.
73  */
74 #define OSMESA_COLOR_INDEX      GL_COLOR_INDEX
75 #define OSMESA_RGBA             GL_RGBA
76 #define OSMESA_BGRA             0x1
77 #define OSMESA_ARGB             0x2
78 #define OSMESA_RGB              GL_RGB
79 #define OSMESA_BGR              0x4
80
81
82 /*
83  * OSMesaPixelStore() parameters:
84  * New in version 2.0.
85  */
86 #define OSMESA_ROW_LENGTH       0x10
87 #define OSMESA_Y_UP             0x11
88
89
90 /*
91  * Accepted by OSMesaGetIntegerv:
92  */
93 #define OSMESA_WIDTH            0x20
94 #define OSMESA_HEIGHT           0x21
95 #define OSMESA_FORMAT           0x22
96 #define OSMESA_TYPE             0x23
97
98
99 typedef struct osmesa_context *OSMesaContext;
100
101
102 #if defined(__BEOS__) || defined(__QUICKDRAW__)
103 #pragma export on
104 #endif
105
106
107 /*
108  * Create an Off-Screen Mesa rendering context.  The only attribute needed is
109  * an RGBA vs Color-Index mode flag.
110  *
111  * Input:  format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA,
112  *                  OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR.
113  *         sharelist - specifies another OSMesaContext with which to share
114  *                     display lists.  NULL indicates no sharing.
115  * Return:  an OSMesaContext or 0 if error
116  */
117 GLAPI OSMesaContext GLAPIENTRY OSMesaCreateContext( GLenum format,
118                                                     OSMesaContext sharelist );
119
120
121
122
123 /*
124  * Destroy an Off-Screen Mesa rendering context.
125  *
126  * Input:  ctx - the context to destroy
127  */
128 GLAPI void GLAPIENTRY OSMesaDestroyContext( OSMesaContext ctx );
129
130
131
132 /*
133  * Bind an OSMesaContext to an image buffer.  The image buffer is just a
134  * block of memory which the client provides.  Its size must be at least
135  * as large as width*height*sizeof(type).  Its address should be a multiple
136  * of 4 if using RGBA mode.
137  *
138  * Image data is stored in the order of glDrawPixels:  row-major order
139  * with the lower-left image pixel stored in the first array position
140  * (ie. bottom-to-top).
141  *
142  * Since the only type initially supported is GL_UNSIGNED_BYTE, if the
143  * context is in RGBA mode, each pixel will be stored as a 4-byte RGBA
144  * value.  If the context is in color indexed mode, each pixel will be
145  * stored as a 1-byte value.
146  *
147  * If the context's viewport hasn't been initialized yet, it will now be
148  * initialized to (0,0,width,height).
149  *
150  * Input:  ctx - the rendering context
151  *         buffer - the image buffer memory
152  *         type - data type for pixel components, only GL_UNSIGNED_BYTE
153  *                supported now
154  *         width, height - size of image buffer in pixels, at least 1
155  * Return:  GL_TRUE if success, GL_FALSE if error because of invalid ctx,
156  *          invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1,
157  *          width>internal limit or height>internal limit.
158  */
159 GLAPI GLboolean GLAPIENTRY OSMesaMakeCurrent( OSMesaContext ctx,
160                                               void *buffer, GLenum type,
161                                               GLsizei width, GLsizei height );
162
163
164
165
166 /*
167  * Return the current Off-Screen Mesa rendering context handle.
168  */
169 GLAPI OSMesaContext GLAPIENTRY OSMesaGetCurrentContext( void );
170
171
172
173 /*
174  * Set pixel store/packing parameters for the current context.
175  * This is similar to glPixelStore.
176  * Input:  pname - OSMESA_ROW_LENGTH
177  *                    specify actual pixels per row in image buffer
178  *                    0 = same as image width (default)
179  *                 OSMESA_Y_UP
180  *                    zero = Y coordinates increase downward
181  *                    non-zero = Y coordinates increase upward (default)
182  *         value - the value for the parameter pname
183  *
184  * New in version 2.0.
185  */
186 GLAPI void GLAPIENTRY OSMesaPixelStore( GLint pname, GLint value );
187
188
189
190 /*
191  * Return an integer value like glGetIntegerv.
192  * Input:  pname -
193  *                 OSMESA_WIDTH  return current image width
194  *                 OSMESA_HEIGHT  return current image height
195  *                 OSMESA_FORMAT  return image format
196  *                 OSMESA_TYPE  return color component data type
197  *                 OSMESA_ROW_LENGTH return row length in pixels
198  *                 OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction
199  *         value - pointer to integer in which to return result.
200  */
201 GLAPI void GLAPIENTRY OSMesaGetIntegerv( GLint pname, GLint *value );
202
203
204
205 /*
206  * Return the depth buffer associated with an OSMesa context.
207  * Input:  c - the OSMesa context
208  * Output:  width, height - size of buffer in pixels
209  *          bytesPerValue - bytes per depth value (2 or 4)
210  *          buffer - pointer to depth buffer values
211  * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
212  *
213  * New in Mesa 2.4.
214  */
215 GLAPI GLboolean GLAPIENTRY OSMesaGetDepthBuffer( OSMesaContext c,
216                                                  GLint *width, GLint *height,
217                                                  GLint *bytesPerValue,
218                                                  void **buffer );
219
220
221 /*
222  * Return the color buffer associated with an OSMesa context.
223  * Input:  c - the OSMesa context
224  * Output:  width, height - size of buffer in pixels
225  *          format - buffer format (OSMESA_FORMAT)
226  *          buffer - pointer to depth buffer values
227  * Return:  GL_TRUE or GL_FALSE to indicate success or failure.
228  *
229  * New in Mesa 3.3.
230  */
231 GLAPI GLboolean GLAPIENTRY OSMesaGetColorBuffer( OSMesaContext c,
232                                                  GLint *width, GLint *height,
233                                                  GLint *format,
234                                                  void **buffer );
235
236
237 #if defined(__BEOS__) || defined(__QUICKDRAW__)
238 #pragma export off
239 #endif
240
241
242 #ifdef __cplusplus
243 }
244 #endif
245
246
247 #endif
248