WindML updates (Stephane Raimbault)
This commit is contained in:
+39
-206
@@ -48,92 +48,66 @@ extern "C" {
|
||||
* Values for display mode of uglMesaCreateContext ()
|
||||
*/
|
||||
|
||||
#define UGL_MESA_SINGLE 0x00
|
||||
#define UGL_MESA_DOUBLE 0x01
|
||||
#define UGL_MESA_DOUBLE_SW 0x02
|
||||
#define UGL_MESA_DOUBLE_HW 0x03
|
||||
/*
|
||||
* With these mask values, it's possible to test double buffer mode
|
||||
* with UGL_MESA_DOUBLE mask
|
||||
*
|
||||
* SINGLE 0000 0001
|
||||
* DOUBLE 0000 0110
|
||||
* - SOFT 0000 0010
|
||||
* - HARD 0000 0100
|
||||
* WINDML 0001 0000
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define UGL_MESA_SINGLE 0x01
|
||||
#define UGL_MESA_DOUBLE 0x06
|
||||
#define UGL_MESA_DOUBLE_SOFTWARE 0x02
|
||||
#define UGL_MESA_DOUBLE_HARDWARE 0x04
|
||||
|
||||
#define UGL_MESA_WINDML_EXCLUSIVE 0x10
|
||||
|
||||
#define UGL_MESA_FULLSCREEN_WIDTH 0x0
|
||||
#define UGL_MESA_FULLSCREEN_HEIGHT 0x0
|
||||
|
||||
/*
|
||||
* Pixel format
|
||||
*/
|
||||
#define UGL_MESA_ARGB8888 0x01
|
||||
#define UGL_MESA_RGB565 0x02
|
||||
#define UGL_MESA_RGB888 0x03
|
||||
#define UGL_MESA_ARGB4444 0x04
|
||||
#define UGL_MESA_CI 0x05
|
||||
#define UGL_MESA_DITHER_RGB 0x10
|
||||
|
||||
/*
|
||||
* uglMesaPixelStore() parameters:
|
||||
*/
|
||||
|
||||
#define UGL_MESA_ROW_LENGTH 0x10
|
||||
#define UGL_MESA_Y_UP 0x11
|
||||
#define UGL_MESA_ROW_LENGTH 0x20
|
||||
#define UGL_MESA_Y_UP 0x21
|
||||
|
||||
/*
|
||||
* Accepted by uglMesaGetIntegerv:
|
||||
*/
|
||||
|
||||
#define UGL_MESA_LEFT_X 0x18
|
||||
#define UGL_MESA_TOP_Y 0x19
|
||||
#define UGL_MESA_WIDTH 0x20
|
||||
#define UGL_MESA_HEIGHT 0x21
|
||||
#define UGL_MESA_DISPLAY_WIDTH 0x22
|
||||
#define UGL_MESA_DISPLAY_HEIGHT 0x23
|
||||
#define UGL_MESA_COLOR_FORMAT 0x24
|
||||
#define UGL_MESA_COLOR_MODEL 0x25
|
||||
#define UGL_MESA_PIXEL_FORMAT 0x26
|
||||
#define UGL_MESA_TYPE 0x27
|
||||
#define UGL_MESA_RGB 0x28
|
||||
#define UGL_MESA_COLOR_INDEXED 0x29
|
||||
|
||||
#define UGL_MESA_LEFT_X 0x01
|
||||
#define UGL_MESA_TOP_Y 0x02
|
||||
#define UGL_MESA_WIDTH 0x03
|
||||
#define UGL_MESA_HEIGHT 0x04
|
||||
#define UGL_MESA_DISPLAY_WIDTH 0x05
|
||||
#define UGL_MESA_DISPLAY_HEIGHT 0x06
|
||||
#define UGL_MESA_COLOR_FORMAT 0x07
|
||||
#define UGL_MESA_COLOR_MODEL 0x08
|
||||
#define UGL_MESA_PIXEL_FORMAT 0x09
|
||||
#define UGL_MESA_TYPE 0x0A
|
||||
#define UGL_MESA_RGB 0x0B
|
||||
#define UGL_MESA_COLOR_INDEXED 0x0C
|
||||
#define UGL_MESA_SINGLE_BUFFER 0x0D
|
||||
#define UGL_MESA_DOUBLE_BUFFER 0x0E
|
||||
#define UGL_MESA_DOUBLE_BUFFER_SOFTWARE 0x0F
|
||||
#define UGL_MESA_DOUBLE_BUFFER_HARDWARE 0x10
|
||||
|
||||
/*
|
||||
* typedefs
|
||||
*/
|
||||
|
||||
typedef struct uglMesaContext * UGL_MESA_CONTEXT;
|
||||
|
||||
/*
|
||||
* Create an Mesa/UGL rendering context. The attributes needed are
|
||||
* double buffer flag and a context sharelist.
|
||||
*
|
||||
* It's necessary to first call this function before use uglMakeCurrentContext.
|
||||
* This function provides neither stencil nor accumulation buffer only
|
||||
* a depth buffer to reduce memory footprint.
|
||||
*
|
||||
* Input: db_mode - UGL_MESA_SINGLE = single buffer mode
|
||||
* UGL_MESA_DOUBLE = double buffer mode (HW fallback -> SW)
|
||||
* UGL_MESA_DOUBLE_SW = double buffer software
|
||||
* UGL_MESA_DOUBLE_HW = double buffer hardware
|
||||
* share_list - specifies another UGL_MESA_CONTEXT with which to share
|
||||
* display lists. NULL indicates no sharing.
|
||||
*
|
||||
* Return: a UGL_MESA_CONTEXT, or zero if error
|
||||
*/
|
||||
|
||||
UGL_MESA_CONTEXT uglMesaCreateNewContext (GLenum db_mode,
|
||||
UGL_MESA_CONTEXT uglMesaCreateNewContext (GLenum mode,
|
||||
UGL_MESA_CONTEXT share_list);
|
||||
|
||||
/*
|
||||
* Create an UGL/Mesa rendering context and specify desired
|
||||
* size of depth buffer, stencil buffer and accumulation buffer.
|
||||
* If you specify zero for depth_bits, stencil_bits,
|
||||
* accum_[red|gren|blue]_bits, you can save some memory.
|
||||
*
|
||||
* INPUT: db_mode - double buffer mode
|
||||
* depth_bits - depth buffer size
|
||||
* stencil_bits - stencil buffer size
|
||||
* accum_red_bits - accumulation red buffer size
|
||||
* accum_green_bits - accumulation green buffer size
|
||||
* accum_blue_bits -accumulation blue buffer size
|
||||
* accum_alpha_bits -accumulation alpha buffer size
|
||||
* share_list - specifies another UGL_MESA_CONTEXT with which to share
|
||||
* display lists. NULL indicates no sharing.
|
||||
*/
|
||||
UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum db_flag,
|
||||
UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum mode,
|
||||
GLint depth_bits,
|
||||
GLint stencil_bits,
|
||||
GLint accum_red_bits,
|
||||
@@ -142,175 +116,34 @@ UGL_MESA_CONTEXT uglMesaCreateNewContextExt (GLenum db_flag,
|
||||
GLint accum_alpha_bits,
|
||||
UGL_MESA_CONTEXT share_list);
|
||||
|
||||
/*
|
||||
* Bind an UGL_MESA_CONTEXT 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: umc - a rendering context
|
||||
* left, top - coordinates in pixels of (left,top) pixel
|
||||
* (0,0) in fullscreen mode.
|
||||
* width, height - size of image buffer in pixels, at least 1
|
||||
* else fullscreen dimensions are used (UGL_MESA_DISPLAY_WIDTH
|
||||
* and UGL_MESA_DISPLAY_HEIGHT).
|
||||
*
|
||||
* Return: GL_TRUE if success, GL_FALSE if error because of invalid umc,
|
||||
* width<1, height<1, width>internal limit or height>internal limit.
|
||||
*/
|
||||
|
||||
GLboolean uglMesaMakeCurrentContext (UGL_MESA_CONTEXT umc,
|
||||
GLsizei left, GLsizei top,
|
||||
GLsizei width, GLsizei height);
|
||||
|
||||
/*
|
||||
* Move an OpenGL window by a delta value
|
||||
*
|
||||
* Input: dx, dy - delta values in pixels
|
||||
*
|
||||
* Return: GL_TRUE if success, GL_FALSE if error because of invalid
|
||||
* coordinates.
|
||||
*/
|
||||
GLboolean uglMesaMoveWindow (GLsizei dx, GLsizei dy);
|
||||
|
||||
/*
|
||||
* Move an OpenGL window to an absolute position
|
||||
*
|
||||
* Input: left, top - new coordinates in pixels
|
||||
*
|
||||
* Return: GL_TRUE if success, GL_FALSE if error because of invalid
|
||||
* coordinates.
|
||||
*/
|
||||
GLboolean uglMesaMoveToWindow (GLsizei left, GLsizei top);
|
||||
|
||||
/*
|
||||
* Resize an OpenGL window by a delta value
|
||||
*
|
||||
* Input: dw, dh - delta values in pixels
|
||||
*
|
||||
* Return: GL_TRUE if success, GL_FALSE if error because of invalid
|
||||
* coordinates.
|
||||
*/
|
||||
GLboolean uglMesaResizeWindow (GLsizei dw, GLsizei dh);
|
||||
|
||||
/*
|
||||
* Resize an OpenGL window to an absolute size
|
||||
*
|
||||
* Input: width, height - new dimensions in pixels
|
||||
*
|
||||
* Return: GL_TRUE if success, GL_FALSE if error because of invalid
|
||||
* coordinates.
|
||||
*/
|
||||
GLboolean uglMesaResizeToWindow (GLsizei width, GLsizei height);
|
||||
|
||||
/*
|
||||
* Destroy the current UGL/Mesa rendering context
|
||||
*
|
||||
*/
|
||||
void uglMesaDestroyContext (void);
|
||||
|
||||
/*
|
||||
* Return the current UGL/Mesa context
|
||||
*
|
||||
* Return: a UGL/Mesa context, or NULL if error
|
||||
*
|
||||
*/
|
||||
UGL_MESA_CONTEXT uglMesaGetCurrentContext (void);
|
||||
|
||||
/*
|
||||
* Swap front and back buffers in double buffering mode. This
|
||||
* function is a no-op if there's no back buffer. In case of software
|
||||
* double buffering a copy occurs from off-screen buffer to front
|
||||
* buffer. Works faster with an hardware support.
|
||||
*/
|
||||
|
||||
void uglMesaSwapBuffers (void);
|
||||
|
||||
/*
|
||||
* Set pixel store/packing parameters for the current context. This
|
||||
* is similar to glPixelStore. UGL uses Y coordinates increase
|
||||
* downward.
|
||||
*
|
||||
* Input: pname - UGL_MESA_ROW_LENGTH
|
||||
* zero, same as image width (default).
|
||||
* value specify actual pixels per row in image buffer
|
||||
* UGL_MESA_Y_UP:
|
||||
* zero = Y coordinates increase downward (default)
|
||||
* non-zero = Y coordinates increase upward
|
||||
* value - value for the parameter pname
|
||||
*/
|
||||
|
||||
void uglMesaPixelStore (GLint pname, GLint value);
|
||||
|
||||
/*
|
||||
* Return an integer value like glGetIntegerv.
|
||||
*
|
||||
* Input: pname - UGL_MESA_LEFT_X return the x axis value
|
||||
* of the most left pixel
|
||||
* UGL_MESA_TOP_Y return the y axis value
|
||||
* of the topper pixel
|
||||
* UGL_MESA_WIDTH return current image width
|
||||
* UGL_MESA_HEIGHT return current image height
|
||||
* UGL_MESA_COLOR_FORMAT return image color format
|
||||
* UGL_MESA_COLOR_MODEL return image color model
|
||||
* UGL_MESA_PIXEL_FORMAT return pixel format
|
||||
* UGL_MESA_ROW_LENGTH return row length in pixels
|
||||
* UGL_MESA_RGB return true if RGB
|
||||
* UGL_MESA_COLOR_INDEXED return true if color indexed
|
||||
* value - pointer to integer in which to return result.
|
||||
*/
|
||||
void uglMesaGetIntegerv (GLint pname, GLint *value);
|
||||
|
||||
/*
|
||||
* Return the depth buffer associated with an UGL/Mesa context.
|
||||
*
|
||||
* Output: width, height - size of buffer in pixels
|
||||
* bytesPerValue - bytes per depth value (2 or 4)
|
||||
* buffer - pointer to depth buffer values
|
||||
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
|
||||
*
|
||||
*/
|
||||
GLboolean uglMesaGetDepthBuffer (GLint *width, GLint *height,
|
||||
GLint *bytesPerValue, void **buffer);
|
||||
|
||||
/*
|
||||
* Return the color buffer associated with an UGL/Mesa context.
|
||||
* Input: c - the UGL/Mesa context
|
||||
* Output: width, height - size of buffer in pixels
|
||||
* format - buffer format (UGLMESA_FORMAT)
|
||||
* buffer - pointer to color buffer values
|
||||
* Return: GL_TRUE or GL_FALSE to indicate success or failure.
|
||||
*
|
||||
*/
|
||||
GLboolean uglMesaGetColorBuffer (GLint *width, GLint *height,
|
||||
GLint *format, void **buffer);
|
||||
|
||||
/*
|
||||
* Color allocation in indexed mode.
|
||||
* This function does nothing in RGB mode.
|
||||
*
|
||||
* Input: index - Value for the current color index
|
||||
* red - Red component (between 0 and 1)
|
||||
* green - Green component (between 0 and 1)
|
||||
* blue - Blue component (between 0 and 1)
|
||||
*
|
||||
* Return: GL_TRUE if success, or GL_FALSE if index<0 or * clutSize<index,
|
||||
* red, green and blue are not between 0.0 and 1.0.
|
||||
*
|
||||
*/
|
||||
|
||||
GLboolean uglMesaSetColor (GLubyte index, GLfloat red,
|
||||
GLfloat green, GLfloat blue);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user