From: Brian P. <br...@tu...> - 2002-02-27 23:07:16
|
Eric Plante wrote: > > Sorry, this is probably a silly question, I feel like I'm in the mood > for missing completely obvious stuff... > > With OSMesa-16, I suppose that the following comment does not apply > (this is in osmesa.h from 4.0.1) > * 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. > > This is a comment appearing for OSMesaMakeCurrent. What should I pass as > the "type" parameter for OSMesa16? GL_UNSIGNED_INT? And how should I > expect the memory to be laid out? 4 bytes / channel for a total of 16 > bytes / channel in RGBA? The comment is dated. I'm about to check in the following update: /* * 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). * * 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 * Normally, only GL_UNSIGNED_BYTE and GL_UNSIGNED_SHORT_5_6_5 * are supported. But if Mesa's been compiled with CHAN_BITS==16 * then type must be GL_UNSIGNED_SHORT. And if Mesa's been build * with CHAN_BITS==32 then type must be GL_FLOAT. * 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, invalid type, width<1, height<1, * width>internal limit or height>internal limit. */ For OSMesa16 (16 bits / channel) you'll have 8 bytes per pixel. Color channels are GLushorts. For OSMesa32 (32 bits / channel) you'll have 16 bytes per pixel. Color channels are GLfloats. -Brian |