Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. #ifndef __gl_core_h_
  2. #define __gl_core_h_
  3.  
  4. /*
  5.  * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
  6.  * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a
  9.  * copy of this software and associated documentation files (the "Software"),
  10.  * to deal in the Software without restriction, including without limitation
  11.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12.  * and/or sell copies of the Software, and to permit persons to whom the
  13.  * Software is furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice including the dates of first publication and
  16.  * either this permission notice or a reference to
  17.  * http://oss.sgi.com/projects/FreeB/
  18.  * shall be included in all copies or substantial portions of the Software.
  19.  *
  20.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  21.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  22.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  23.  * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  24.  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
  25.  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  26.  * SOFTWARE.
  27.  *
  28.  * Except as contained in this notice, the name of Silicon Graphics, Inc.
  29.  * shall not be used in advertising or otherwise to promote the sale, use or
  30.  * other dealings in this Software without prior written authorization from
  31.  * Silicon Graphics, Inc.
  32.  */
  33.  
  34. #if !defined(_WIN32_WCE)
  35. #include <sys/types.h>
  36. #endif
  37.  
  38. #define GL_CORE_SGI  1
  39. #define GL_CORE_MESA 2
  40. #define GL_CORE_APPLE 4
  41. #define GL_CORE_WINDOWS 8
  42.  
  43. typedef struct __GLcontextRec __GLcontext;
  44.  
  45. /*
  46. ** This file defines the interface between the GL core and the surrounding
  47. ** "operating system" that supports it (currently the GLX or WGL extensions).
  48. **
  49. ** Members (data and function pointers) are documented as imported or
  50. ** exported according to how they are used by the core rendering functions.
  51. ** Imported members are initialized by the "operating system" and used by
  52. ** the core functions.  Exported members are initialized by the core functions
  53. ** and used by the "operating system".
  54. */
  55.  
  56. /**
  57.  * Mode and limit information for a context.  This information is
  58.  * kept around in the context so that values can be used during
  59.  * command execution, and for returning information about the
  60.  * context to the application.
  61.  *
  62.  * Instances of this structure are shared by the driver and the loader.  To
  63.  * maintain binary compatability, new fields \b must be added only to the
  64.  * end of the structure.
  65.  *
  66.  * \sa _gl_context_modes_create
  67.  */
  68. typedef struct __GLcontextModesRec {
  69.     struct __GLcontextModesRec * next;
  70.  
  71.     GLboolean rgbMode;
  72.     GLboolean floatMode;
  73.     GLboolean colorIndexMode;
  74.     GLuint doubleBufferMode;
  75.     GLuint stereoMode;
  76.  
  77.     GLboolean haveAccumBuffer;
  78.     GLboolean haveDepthBuffer;
  79.     GLboolean haveStencilBuffer;
  80.  
  81.     GLint redBits, greenBits, blueBits, alphaBits;      /* bits per comp */
  82.     GLuint redMask, greenMask, blueMask, alphaMask;
  83.     GLint rgbBits;              /* total bits for rgb */
  84.     GLint indexBits;            /* total bits for colorindex */
  85.  
  86.     GLint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
  87.     GLint depthBits;
  88.     GLint stencilBits;
  89.  
  90.     GLint numAuxBuffers;
  91.  
  92.     GLint level;
  93.  
  94.     GLint pixmapMode;
  95.  
  96.     /* GLX */
  97.     GLint visualID;
  98.     GLint visualType;     /**< One of the GLX X visual types. (i.e.,
  99.                            * \c GLX_TRUE_COLOR, etc.)
  100.                            */
  101.  
  102.     /* EXT_visual_rating / GLX 1.2 */
  103.     GLint visualRating;
  104.  
  105.     /* EXT_visual_info / GLX 1.2 */
  106.     GLint transparentPixel;
  107.                                 /*    colors are floats scaled to ints */
  108.     GLint transparentRed, transparentGreen, transparentBlue, transparentAlpha;
  109.     GLint transparentIndex;
  110.  
  111.     /* ARB_multisample / SGIS_multisample */
  112.     GLint sampleBuffers;
  113.     GLint samples;
  114.  
  115.     /* SGIX_fbconfig / GLX 1.3 */
  116.     GLint drawableType;
  117.     GLint renderType;
  118.     GLint xRenderable;
  119.     GLint fbconfigID;
  120.  
  121.     /* SGIX_pbuffer / GLX 1.3 */
  122.     GLint maxPbufferWidth;
  123.     GLint maxPbufferHeight;
  124.     GLint maxPbufferPixels;
  125.     GLint optimalPbufferWidth;   /* Only for SGIX_pbuffer. */
  126.     GLint optimalPbufferHeight;  /* Only for SGIX_pbuffer. */
  127.  
  128.     /* SGIX_visual_select_group */
  129.     GLint visualSelectGroup;
  130.  
  131.     /* OML_swap_method */
  132.     GLint swapMethod;
  133.  
  134.     GLint screen;
  135.  
  136.     /* EXT_texture_from_pixmap */
  137.     GLint bindToTextureRgb;
  138.     GLint bindToTextureRgba;
  139.     GLint bindToMipmapTexture;
  140.     GLint bindToTextureTargets;
  141.     GLint yInverted;
  142. } __GLcontextModes;
  143.  
  144. /* Several fields of __GLcontextModes can take these as values.  Since
  145.  * GLX header files may not be available everywhere they need to be used,
  146.  * redefine them here.
  147.  */
  148. #define GLX_NONE                           0x8000
  149. #define GLX_SLOW_CONFIG                    0x8001
  150. #define GLX_TRUE_COLOR                     0x8002
  151. #define GLX_DIRECT_COLOR                   0x8003
  152. #define GLX_PSEUDO_COLOR                   0x8004
  153. #define GLX_STATIC_COLOR                   0x8005
  154. #define GLX_GRAY_SCALE                     0x8006
  155. #define GLX_STATIC_GRAY                    0x8007
  156. #define GLX_TRANSPARENT_RGB                0x8008
  157. #define GLX_TRANSPARENT_INDEX              0x8009
  158. #define GLX_NON_CONFORMANT_CONFIG          0x800D
  159. #define GLX_SWAP_EXCHANGE_OML              0x8061
  160. #define GLX_SWAP_COPY_OML                  0x8062
  161. #define GLX_SWAP_UNDEFINED_OML             0x8063
  162.  
  163. #define GLX_DONT_CARE                      0xFFFFFFFF
  164.  
  165. #define GLX_RGBA_BIT                       0x00000001
  166. #define GLX_COLOR_INDEX_BIT                0x00000002
  167. #define GLX_WINDOW_BIT                     0x00000001
  168. #define GLX_PIXMAP_BIT                     0x00000002
  169. #define GLX_PBUFFER_BIT                    0x00000004
  170.  
  171. #define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
  172. #define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
  173. #define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
  174. #define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
  175. #define GLX_Y_INVERTED_EXT                 0x20D4
  176.  
  177. #define GLX_TEXTURE_1D_BIT_EXT             0x00000001
  178. #define GLX_TEXTURE_2D_BIT_EXT             0x00000002
  179. #define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
  180.  
  181. #endif /* __gl_core_h_ */
  182.