This is osmesa.h in view mode; [Download] [Up]
/* $Id: osmesa.h,v 1.5 1997/02/19 10:13:54 brianp Exp $ */ /* * Mesa 3-D graphics library * Version: 2.2 * Copyright (C) 1995-1997 Brian Paul * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * $Log: osmesa.h,v $ * Revision 1.5 1997/02/19 10:13:54 brianp * now test for __QUICKDRAW__ like for __BEOS__ (Randy Frank) * * Revision 1.4 1997/02/10 20:31:41 brianp * added OSMESA_RGB and OSMESA_BGR, per Randy Frank * * Revision 1.3 1997/02/03 20:07:40 brianp * patches for BeOS * * Revision 1.2 1996/10/30 03:12:30 brianp * incremented version to 2.1 * * Revision 1.1 1996/09/13 01:26:41 brianp * Initial revision * */ /* * Mesa Off-Screen rendering interface. * * This is an operating system and window system independent interface to * Mesa which allows one to render images into a client-supplied buffer in * main memory. Such images may manipulated or saved in whatever way the * client wants. * * These are the API functions: * OSMesaCreateContext - create a new Off-Screen Mesa rendering context * OSMesaMakeCurrent - bind an OSMesaContext to a client's image buffer * and make the specified context the current one. * OSMesaDestroyContext - destroy an OSMesaContext * OSMesaGetCurrentContext - return thread's current context ID * OSMesaPixelStore - controls how pixels are stored in image buffer * OSMesaGetIntegerv - return OSMesa state parameters * * * The limits on the width and height of an image buffer are MAX_WIDTH and * MAX_HEIGHT as defined in Mesa/src/config.h. Defaults are 1280 and 1024. * You can increase them as needed but beware that many temporary arrays in * Mesa are dimensioned by MAX_WIDTH or MAX_WIDTH. */ #ifndef OSMESA_H #define OSMESA_H #ifdef __cplusplus extern "C" { #endif #include <GL/gl.h> #define OSMESA_MAJOR_VERSION 2 #define OSMESA_MINOR_VERSION 1 /* * Values for the format parameter of OSMesaCreateContext() * New in version 2.0. */ #define OSMESA_COLOR_INDEX GL_COLOR_INDEX #define OSMESA_RGBA GL_RGBA #define OSMESA_BGRA 0x1 #define OSMESA_ARGB 0x2 #define OSMESA_RGB GL_RGB #define OSMESA_BGR 0x4 /* * OSMesaPixelStore() parameters: * New in version 2.0. */ #define OSMESA_ROW_LENGTH 0x10 #define OSMESA_Y_UP 0x11 /* * Accepted by OSMesaGetIntegerv: */ #define OSMESA_WIDTH 0x20 #define OSMESA_HEIGHT 0x21 #define OSMESA_FORMAT 0x22 #define OSMESA_TYPE 0x23 typedef struct osmesa_context *OSMesaContext; #if defined(__BEOS__) || defined(__QUICKDRAW__) #pragma export on #endif /* * Create an Off-Screen Mesa rendering context. The only attribute needed is * an RGBA vs Color-Index mode flag. * * Input: format - one of OSMESA_COLOR_INDEX, OSMESA_RGBA, OSMESA_BGRA, * OSMESA_ARGB, OSMESA_RGB, or OSMESA_BGR. * sharelist - specifies another OSMesaContext with which to share * display lists. NULL indicates no sharing. * Return: an OSMesaContext or 0 if error */ extern OSMesaContext OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); /* * Destroy an Off-Screen Mesa rendering context. * * Input: ctx - the context to destroy */ extern void OSMesaDestroyContext( OSMesaContext ctx ); /* * Bind an OSMesaContext to an image buffer. The image buffer is just a * block of memory which the client provides. Its size must be at least * as large as width*height*sizeof(type). Its address should be a multiple * of 4 if using RGBA mode. * * Image data is stored in the order of glDrawPixels: row-major order * with the lower-left image pixel stored in the first array position * (ie. bottom-to-top). * * Since the only type initially supported is GL_UNSIGNED_BYTE, if the * context is in RGBA mode, each pixel will be stored as a 4-byte RGBA * value. If the context is in color indexed mode, each pixel will be * stored as a 1-byte value. * * If the context's viewport hasn't been initialized yet, it will now be * initialized to (0,0,width,height). * * Input: ctx - the rendering context * buffer - the image buffer memory * type - data type for pixel components, only GL_UNSIGNED_BYTE * supported now * width, height - size of image buffer in pixels, at least 1 * Return: GL_TRUE if success, GL_FALSE if error because of invalid ctx, * invalid buffer address, type!=GL_UNSIGNED_BYTE, width<1, height<1, * width>internal limit or height>internal limit. */ extern GLboolean OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); /* * Return the current Off-Screen Mesa rendering context handle. */ extern OSMesaContext OSMesaGetCurrentContext( void ); /* * Set pixel store/packing parameters for the current context. * This is similar to glPixelStore. * Input: pname - OSMESA_ROW_LENGTH * specify actual pixels per row in image buffer * 0 = same as image width (default) * OSMESA_Y_UP * zero = Y coordinates increase downward * non-zero = Y coordinates increase upward (default) * value - the value for the parameter pname * * New in version 2.0. */ extern void OSMesaPixelStore( GLint pname, GLint value ); /* * Return context info. This is like glGetIntegerv. * Input: pname - * OSMESA_WIDTH return current image width * OSMESA_HEIGHT return current image height * OSMESA_FORMAT return image format * OSMESA_TYPE return color component data type * OSMESA_ROW_LENGTH return row length in pixels * OSMESA_Y_UP returns 1 or 0 to indicate Y axis direction * value - pointer to integer in which to return result. */ extern void OSMesaGetIntegerv( GLint pname, GLint *value ); #if defined(__BEOS__) || defined(__QUICKDRAW__) #pragma export off #endif #ifdef __cplusplus } #endif #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.