Ignore:
Timestamp:
May 23, 2000, 10:41:28 PM (25 years ago)
Author:
jeroen
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/opengl/mesa/extensions.c

    r2962 r3598  
    1 /* $Id: extensions.c,v 1.2 2000-03-01 18:49:28 jeroen Exp $ */
     1/* $Id: extensions.c,v 1.3 2000-05-23 20:40:33 jeroen Exp $ */
    22
    33/*
    44 * Mesa 3-D graphics library
    5  * Version:  3.1
     5 * Version:  3.3
    66 *
    77 * Copyright (C) 1999  Brian Paul   All Rights Reserved.
     
    2626
    2727
    28 #ifndef XFree86Server
    29 #include <stdlib.h>
    30 #else
    31 #include "GL/xf86glx.h"
    32 #endif
     28#include "glheader.h"
    3329#include "types.h"
    3430#include "context.h"
    3531#include "extensions.h"
    3632#include "simple_list.h"
     33#include "mem.h"
    3734
    3835
     
    4138struct extension {
    4239   struct extension *next, *prev;
    43    int enabled;
     40   GLint enabled;
    4441   char name[MAX_EXT_NAMELEN+1];
    4542   void (*notify)( GLcontext *, GLboolean );
     
    4946
    5047static struct { int enabled; const char *name; } default_extensions[] = {
    51    { ALWAYS_ENABLED, "GL_EXT_blend_color" },
     48   { DEFAULT_ON,    "GL_EXT_blend_color" },
    5249   { DEFAULT_OFF,    "ARB_imaging" },
    5350   { DEFAULT_ON,     "GL_EXT_blend_minmax" },
     
    7370   { DEFAULT_ON,     "GL_EXT_compiled_vertex_array" },
    7471   { DEFAULT_ON,     "GL_EXT_clip_volume_hint" },
    75 
    76    /* These obviously won't make it before 3.3:
    77     */
     72   { DEFAULT_ON,     "GL_EXT_texture_env_add" },
     73   { ALWAYS_ENABLED, "GL_ARB_tranpose_matrix" },
    7874   { DEFAULT_OFF,    "GL_EXT_vertex_array_set" },
    7975   { DEFAULT_OFF,    "GL_EXT_texture_env" },
    80    { DEFAULT_OFF,    "GL_EXT_fog_coord" },
     76   { DEFAULT_ON,     "GL_EXT_texture_lod_bias" },
     77   { DEFAULT_OFF,    "GL_HP_occlusion_test" }
    8178};
    8279
    8380
     81/*
     82 * Update the boolean convenience flags in the Extensions struct.
     83 */
     84static void
     85update_extension_flags( GLcontext *ctx )
     86{
     87   /* Update flags */
     88   ctx->Extensions.HaveTextureEnvAdd = gl_extension_is_enabled(ctx, "GL_EXT_texture_env_add");
     89   ctx->Extensions.HaveTextureLodBias = gl_extension_is_enabled(ctx, "GL_EXT_texture_lod_bias");
     90   ctx->Extensions.HaveHpOcclusionTest = gl_extension_is_enabled(ctx, "GL_HP_occlusion_test");
     91}
     92
     93
     94
    8495int gl_extensions_add( GLcontext *ctx,
    85                        int state,
    86                        const char *name,
    87                        void (*notify)(void) )
     96                       int state,
     97                       const char *name,
     98                       void (*notify)(void) )
    8899{
    89100   (void) notify;
     
    103114
    104115
    105 static int set_extension( GLcontext *ctx, const char *name, GLuint state )
     116/*
     117 * Either enable or disable the named extension.
     118 */
     119static int set_extension( GLcontext *ctx, const char *name, GLint state )
    106120{
    107121   struct extension *i;
    108122   foreach( i, ctx->Extensions.ext_list )
    109123      if (strncmp(i->name, name, MAX_EXT_NAMELEN) == 0)
    110         break;
    111 
    112    if (i == ctx->Extensions.ext_list) return 1;
    113 
    114    if (i->enabled && !(i->enabled & ALWAYS_ENABLED))
    115    {
     124        break;
     125
     126   if (i == ctx->Extensions.ext_list)
     127      return 1;
     128
     129   if (i->enabled && !(i->enabled & ALWAYS_ENABLED)) {
    116130      if (i->notify) i->notify( ctx, state );
    117131      i->enabled = state;
    118132   }
     133
     134   update_extension_flags(ctx);
    119135
    120136   return 0;
     
    167183   if (ctx->Extensions.ext_list) {
    168184      foreach_s( i, nexti, ctx->Extensions.ext_list ) {
    169         remove_from_list( i );
    170         FREE( i );
     185        remove_from_list( i );
     186        FREE( i );
    171187      }
    172188
     
    187203   for (i = 0 ; i < Elements(default_extensions) ; i++) {
    188204      gl_extensions_add( ctx,
    189                          default_extensions[i].enabled,
    190                          default_extensions[i].name,
    191                          0 );
    192    }
     205                         default_extensions[i].enabled,
     206                         default_extensions[i].name,
     207                         0 );
     208   }
     209   update_extension_flags(ctx);
    193210}
    194211
     
    202219      GLuint len = 0;
    203220      foreach (i, ctx->Extensions.ext_list)
    204         if (i->enabled)
    205             len += strlen(i->name) + 1;
     221        if (i->enabled)
     222            len += strlen(i->name) + 1;
    206223
    207224      if (len == 0)
    208         return "";
     225        return "";
    209226
    210227      str = (char *)MALLOC(len * sizeof(char));
     
    212229
    213230      foreach (i, ctx->Extensions.ext_list)
    214         if (i->enabled) {
    215             strcpy(str, i->name);
    216             str += strlen(str);
    217             *str++ = ' ';
    218         }
     231        if (i->enabled) {
     232            strcpy(str, i->name);
     233            str += strlen(str);
     234            *str++ = ' ';
     235        }
    219236
    220237      *(str-1) = 0;
     
    223240   return ctx->Extensions.ext_string;
    224241}
    225 
    226 
    227 
    228 /*
    229  * Return the address of an extension function.
    230  * This is meant to be called by glXGetProcAddress(), wglGetProcAddress(),
    231  * or similar function.
    232  * NOTE: this function could be optimized to binary search a sorted
    233  * list of function names.
    234  */
    235 void (*gl_get_proc_address( const GLubyte *procName ))()
    236 {
    237    typedef void (*gl_function)();
    238    struct proc {
    239       const char *name;
    240       gl_function address;
    241    };
    242    static struct proc procTable[] = {
    243       /* OpenGL 1.0 functions */
    244       { "glAccum", (gl_function) glAccum },
    245       { "glAlphaFunc", (gl_function) glAlphaFunc },
    246       { "glBegin", (gl_function) glBegin },
    247       { "glBitmap", (gl_function) glBitmap },
    248       { "glAccum", (gl_function) glAccum },
    249       { "glAlphaFunc", (gl_function) glAlphaFunc },
    250       { "glBegin", (gl_function) glBegin },
    251       { "glBitmap", (gl_function) glBitmap },
    252       { "glBlendFunc", (gl_function) glBlendFunc },
    253       { "glCallList", (gl_function) glCallList },
    254       { "glCallLists", (gl_function) glCallLists },
    255       { "glClear", (gl_function) glClear },
    256       { "glClearAccum", (gl_function) glClearAccum },
    257       { "glClearColor", (gl_function) glClearColor },
    258       { "glClearDepth", (gl_function) glClearDepth },
    259       { "glClearIndex", (gl_function) glClearIndex },
    260       { "glClearStencil", (gl_function) glClearStencil },
    261       { "glClipPlane", (gl_function) glClipPlane },
    262       { "glColor3b", (gl_function) glColor3b },
    263       { "glColor3bv", (gl_function) glColor3bv },
    264       { "glColor3d", (gl_function) glColor3d },
    265       { "glColor3dv", (gl_function) glColor3dv },
    266       { "glColor3f", (gl_function) glColor3f },
    267       { "glColor3fv", (gl_function) glColor3fv },
    268       { "glColor3i", (gl_function) glColor3i },
    269       { "glColor3iv", (gl_function) glColor3iv },
    270       { "glColor3s", (gl_function) glColor3s },
    271       { "glColor3sv", (gl_function) glColor3sv },
    272       { "glColor3ub", (gl_function) glColor3ub },
    273       { "glColor3ubv", (gl_function) glColor3ubv },
    274       { "glColor3ui", (gl_function) glColor3ui },
    275       { "glColor3uiv", (gl_function) glColor3uiv },
    276       { "glColor3us", (gl_function) glColor3us },
    277       { "glColor3usv", (gl_function) glColor3usv },
    278       { "glColor4b", (gl_function) glColor4b },
    279       { "glColor4bv", (gl_function) glColor4bv },
    280       { "glColor4d", (gl_function) glColor4d },
    281       { "glColor4dv", (gl_function) glColor4dv },
    282       { "glColor4f", (gl_function) glColor4f },
    283       { "glColor4fv", (gl_function) glColor4fv },
    284       { "glColor4i", (gl_function) glColor4i },
    285       { "glColor4iv", (gl_function) glColor4iv },
    286       { "glColor4s", (gl_function) glColor4s },
    287       { "glColor4sv", (gl_function) glColor4sv },
    288       { "glColor4ub", (gl_function) glColor4ub },
    289       { "glColor4ubv", (gl_function) glColor4ubv },
    290       { "glColor4ui", (gl_function) glColor4ui },
    291       { "glColor4uiv", (gl_function) glColor4uiv },
    292       { "glColor4us", (gl_function) glColor4us },
    293       { "glColor4usv", (gl_function) glColor4usv },
    294       { "glColorMask", (gl_function) glColorMask },
    295       { "glColorMaterial", (gl_function) glColorMaterial },
    296       { "glCopyPixels", (gl_function) glCopyPixels },
    297       { "glCullFace", (gl_function) glCullFace },
    298       { "glDeleteLists", (gl_function) glDeleteLists },
    299       { "glDepthFunc", (gl_function) glDepthFunc },
    300       { "glDepthMask", (gl_function) glDepthMask },
    301       { "glDepthRange", (gl_function) glDepthRange },
    302       { "glDisable", (gl_function) glDisable },
    303       { "glDrawBuffer", (gl_function) glDrawBuffer },
    304       { "glDrawPixels", (gl_function) glDrawPixels },
    305       { "glEdgeFlag", (gl_function) glEdgeFlag },
    306       { "glEdgeFlagv", (gl_function) glEdgeFlagv },
    307       { "glEnable", (gl_function) glEnable },
    308       { "glEnd", (gl_function) glEnd },
    309       { "glEndList", (gl_function) glEndList },
    310       { "glEvalCoord1d", (gl_function) glEvalCoord1d },
    311       { "glEvalCoord1dv", (gl_function) glEvalCoord1dv },
    312       { "glEvalCoord1f", (gl_function) glEvalCoord1f },
    313       { "glEvalCoord1fv", (gl_function) glEvalCoord1fv },
    314       { "glEvalCoord2d", (gl_function) glEvalCoord2d },
    315       { "glEvalCoord2dv", (gl_function) glEvalCoord2dv },
    316       { "glEvalCoord2f", (gl_function) glEvalCoord2f },
    317       { "glEvalCoord2fv", (gl_function) glEvalCoord2fv },
    318       { "glEvalMesh1", (gl_function) glEvalMesh1 },
    319       { "glEvalMesh2", (gl_function) glEvalMesh2 },
    320       { "glEvalPoint1", (gl_function) glEvalPoint1 },
    321       { "glEvalPoint2", (gl_function) glEvalPoint2 },
    322       { "glFeedbackBuffer", (gl_function) glFeedbackBuffer },
    323       { "glFinish", (gl_function) glFinish },
    324       { "glFlush", (gl_function) glFlush },
    325       { "glFogf", (gl_function) glFogf },
    326       { "glFogfv", (gl_function) glFogfv },
    327       { "glFogi", (gl_function) glFogi },
    328       { "glFogiv", (gl_function) glFogiv },
    329       { "glFrontFace", (gl_function) glFrontFace },
    330       { "glFrustum", (gl_function) glFrustum },
    331       { "glGenLists", (gl_function) glGenLists },
    332       { "glGetBooleanv", (gl_function) glGetBooleanv },
    333       { "glGetClipPlane", (gl_function) glGetClipPlane },
    334       { "glGetDoublev", (gl_function) glGetDoublev },
    335       { "glGetError", (gl_function) glGetError },
    336       { "glGetFloatv", (gl_function) glGetFloatv },
    337       { "glGetIntegerv", (gl_function) glGetIntegerv },
    338       { "glGetLightfv", (gl_function) glGetLightfv },
    339       { "glGetLightiv", (gl_function) glGetLightiv },
    340       { "glGetMapdv", (gl_function) glGetMapdv },
    341       { "glGetMapfv", (gl_function) glGetMapfv },
    342       { "glGetMapiv", (gl_function) glGetMapiv },
    343       { "glGetMaterialfv", (gl_function) glGetMaterialfv },
    344       { "glGetMaterialiv", (gl_function) glGetMaterialiv },
    345       { "glGetPixelMapfv", (gl_function) glGetPixelMapfv },
    346       { "glGetPixelMapuiv", (gl_function) glGetPixelMapuiv },
    347       { "glGetPixelMapusv", (gl_function) glGetPixelMapusv },
    348       { "glGetPolygonStipple", (gl_function) glGetPolygonStipple },
    349       { "glGetString", (gl_function) glGetString },
    350       { "glGetTexEnvfv", (gl_function) glGetTexEnvfv },
    351       { "glGetTexEnviv", (gl_function) glGetTexEnviv },
    352       { "glGetTexGendv", (gl_function) glGetTexGendv },
    353       { "glGetTexGenfv", (gl_function) glGetTexGenfv },
    354       { "glGetTexGeniv", (gl_function) glGetTexGeniv },
    355       { "glGetTexImage", (gl_function) glGetTexImage },
    356       { "glGetTexLevelParameterfv", (gl_function) glGetTexLevelParameterfv },
    357       { "glGetTexLevelParameteriv", (gl_function) glGetTexLevelParameteriv },
    358       { "glGetTexParameterfv", (gl_function) glGetTexParameterfv },
    359       { "glGetTexParameteriv", (gl_function) glGetTexParameteriv },
    360       { "glHint", (gl_function) glHint },
    361       { "glIndexMask", (gl_function) glIndexMask },
    362       { "glIndexd", (gl_function) glIndexd },
    363       { "glIndexdv", (gl_function) glIndexdv },
    364       { "glIndexf", (gl_function) glIndexf },
    365       { "glIndexfv", (gl_function) glIndexfv },
    366       { "glIndexi", (gl_function) glIndexi },
    367       { "glIndexiv", (gl_function) glIndexiv },
    368       { "glIndexs", (gl_function) glIndexs },
    369       { "glIndexsv", (gl_function) glIndexsv },
    370       { "glInitNames", (gl_function) glInitNames },
    371       { "glIsEnabled", (gl_function) glIsEnabled },
    372       { "glIsList", (gl_function) glIsList },
    373       { "glLightModelf", (gl_function) glLightModelf },
    374       { "glLightModelfv", (gl_function) glLightModelfv },
    375       { "glLightModeli", (gl_function) glLightModeli },
    376       { "glLightModeliv", (gl_function) glLightModeliv },
    377       { "glLightf", (gl_function) glLightf },
    378       { "glLightfv", (gl_function) glLightfv },
    379       { "glLighti", (gl_function) glLighti },
    380       { "glLightiv", (gl_function) glLightiv },
    381       { "glLineStipple", (gl_function) glLineStipple },
    382       { "glLineWidth", (gl_function) glLineWidth },
    383       { "glListBase", (gl_function) glListBase },
    384       { "glLoadIdentity", (gl_function) glLoadIdentity },
    385       { "glLoadMatrixd", (gl_function) glLoadMatrixd },
    386       { "glLoadMatrixf", (gl_function) glLoadMatrixf },
    387       { "glLoadName", (gl_function) glLoadName },
    388       { "glLogicOp", (gl_function) glLogicOp },
    389       { "glMap1d", (gl_function) glMap1d },
    390       { "glMap1f", (gl_function) glMap1f },
    391       { "glMap2d", (gl_function) glMap2d },
    392       { "glMap2f", (gl_function) glMap2f },
    393       { "glMapGrid1d", (gl_function) glMapGrid1d },
    394       { "glMapGrid1f", (gl_function) glMapGrid1f },
    395       { "glMapGrid2d", (gl_function) glMapGrid2d },
    396       { "glMapGrid2f", (gl_function) glMapGrid2f },
    397       { "glMaterialf", (gl_function) glMaterialf },
    398       { "glMaterialfv", (gl_function) glMaterialfv },
    399       { "glMateriali", (gl_function) glMateriali },
    400       { "glMaterialiv", (gl_function) glMaterialiv },
    401       { "glMatrixMode", (gl_function) glMatrixMode },
    402       { "glMultMatrixd", (gl_function) glMultMatrixd },
    403       { "glMultMatrixf", (gl_function) glMultMatrixf },
    404       { "glNewList", (gl_function) glNewList },
    405       { "glNormal3b", (gl_function) glNormal3b },
    406       { "glNormal3bv", (gl_function) glNormal3bv },
    407       { "glNormal3d", (gl_function) glNormal3d },
    408       { "glNormal3dv", (gl_function) glNormal3dv },
    409       { "glNormal3f", (gl_function) glNormal3f },
    410       { "glNormal3fv", (gl_function) glNormal3fv },
    411       { "glNormal3i", (gl_function) glNormal3i },
    412       { "glNormal3iv", (gl_function) glNormal3iv },
    413       { "glNormal3s", (gl_function) glNormal3s },
    414       { "glNormal3sv", (gl_function) glNormal3sv },
    415       { "glOrtho", (gl_function) glOrtho },
    416       { "glPassThrough", (gl_function) glPassThrough },
    417       { "glPixelMapfv", (gl_function) glPixelMapfv },
    418       { "glPixelMapuiv", (gl_function) glPixelMapuiv },
    419       { "glPixelMapusv", (gl_function) glPixelMapusv },
    420       { "glPixelStoref", (gl_function) glPixelStoref },
    421       { "glPixelStorei", (gl_function) glPixelStorei },
    422       { "glPixelTransferf", (gl_function) glPixelTransferf },
    423       { "glPixelTransferi", (gl_function) glPixelTransferi },
    424       { "glPixelZoom", (gl_function) glPixelZoom },
    425       { "glPointSize", (gl_function) glPointSize },
    426       { "glPolygonMode", (gl_function) glPolygonMode },
    427       { "glPolygonOffset", (gl_function) glPolygonOffset },
    428       { "glPolygonStipple", (gl_function) glPolygonStipple },
    429       { "glPopAttrib", (gl_function) glPopAttrib },
    430       { "glPopMatrix", (gl_function) glPopMatrix },
    431       { "glPopName", (gl_function) glPopName },
    432       { "glPushAttrib", (gl_function) glPushAttrib },
    433       { "glPushMatrix", (gl_function) glPushMatrix },
    434       { "glPushName", (gl_function) glPushName },
    435       { "glRasterPos2d", (gl_function) glRasterPos2d },
    436       { "glRasterPos2dv", (gl_function) glRasterPos2dv },
    437       { "glRasterPos2f", (gl_function) glRasterPos2f },
    438       { "glRasterPos2fv", (gl_function) glRasterPos2fv },
    439       { "glRasterPos2i", (gl_function) glRasterPos2i },
    440       { "glRasterPos2iv", (gl_function) glRasterPos2iv },
    441       { "glRasterPos2s", (gl_function) glRasterPos2s },
    442       { "glRasterPos2sv", (gl_function) glRasterPos2sv },
    443       { "glRasterPos3d", (gl_function) glRasterPos3d },
    444       { "glRasterPos3dv", (gl_function) glRasterPos3dv },
    445       { "glRasterPos3f", (gl_function) glRasterPos3f },
    446       { "glRasterPos3fv", (gl_function) glRasterPos3fv },
    447       { "glRasterPos3i", (gl_function) glRasterPos3i },
    448       { "glRasterPos3iv", (gl_function) glRasterPos3iv },
    449       { "glRasterPos3s", (gl_function) glRasterPos3s },
    450       { "glRasterPos3sv", (gl_function) glRasterPos3sv },
    451       { "glRasterPos4d", (gl_function) glRasterPos4d },
    452       { "glRasterPos4dv", (gl_function) glRasterPos4dv },
    453       { "glRasterPos4f", (gl_function) glRasterPos4f },
    454       { "glRasterPos4fv", (gl_function) glRasterPos4fv },
    455       { "glRasterPos4i", (gl_function) glRasterPos4i },
    456       { "glRasterPos4iv", (gl_function) glRasterPos4iv },
    457       { "glRasterPos4s", (gl_function) glRasterPos4s },
    458       { "glRasterPos4sv", (gl_function) glRasterPos4sv },
    459       { "glReadBuffer", (gl_function) glReadBuffer },
    460       { "glReadPixels", (gl_function) glReadPixels },
    461       { "glRectd", (gl_function) glRectd },
    462       { "glRectdv", (gl_function) glRectdv },
    463       { "glRectf", (gl_function) glRectf },
    464       { "glRectfv", (gl_function) glRectfv },
    465       { "glRecti", (gl_function) glRecti },
    466       { "glRectiv", (gl_function) glRectiv },
    467       { "glRects", (gl_function) glRects },
    468       { "glRectsv", (gl_function) glRectsv },
    469       { "glRenderMode", (gl_function) glRenderMode },
    470       { "glRotated", (gl_function) glRotated },
    471       { "glRotatef", (gl_function) glRotatef },
    472       { "glScaled", (gl_function) glScaled },
    473       { "glScalef", (gl_function) glScalef },
    474       { "glScissor", (gl_function) glScissor },
    475       { "glSelectBuffer", (gl_function) glSelectBuffer },
    476       { "glShadeModel", (gl_function) glShadeModel },
    477       { "glStencilFunc", (gl_function) glStencilFunc },
    478       { "glStencilMask", (gl_function) glStencilMask },
    479       { "glStencilOp", (gl_function) glStencilOp },
    480       { "glTexCoord1d", (gl_function) glTexCoord1d },
    481       { "glTexCoord1dv", (gl_function) glTexCoord1dv },
    482       { "glTexCoord1f", (gl_function) glTexCoord1f },
    483       { "glTexCoord1fv", (gl_function) glTexCoord1fv },
    484       { "glTexCoord1i", (gl_function) glTexCoord1i },
    485       { "glTexCoord1iv", (gl_function) glTexCoord1iv },
    486       { "glTexCoord1s", (gl_function) glTexCoord1s },
    487       { "glTexCoord1sv", (gl_function) glTexCoord1sv },
    488       { "glTexCoord2d", (gl_function) glTexCoord2d },
    489       { "glTexCoord2dv", (gl_function) glTexCoord2dv },
    490       { "glTexCoord2f", (gl_function) glTexCoord2f },
    491       { "glTexCoord2fv", (gl_function) glTexCoord2fv },
    492       { "glTexCoord2i", (gl_function) glTexCoord2i },
    493       { "glTexCoord2iv", (gl_function) glTexCoord2iv },
    494       { "glTexCoord2s", (gl_function) glTexCoord2s },
    495       { "glTexCoord2sv", (gl_function) glTexCoord2sv },
    496       { "glTexCoord3d", (gl_function) glTexCoord3d },
    497       { "glTexCoord3dv", (gl_function) glTexCoord3dv },
    498       { "glTexCoord3f", (gl_function) glTexCoord3f },
    499       { "glTexCoord3fv", (gl_function) glTexCoord3fv },
    500       { "glTexCoord3i", (gl_function) glTexCoord3i },
    501       { "glTexCoord3iv", (gl_function) glTexCoord3iv },
    502       { "glTexCoord3s", (gl_function) glTexCoord3s },
    503       { "glTexCoord3sv", (gl_function) glTexCoord3sv },
    504       { "glTexCoord4d", (gl_function) glTexCoord4d },
    505       { "glTexCoord4dv", (gl_function) glTexCoord4dv },
    506       { "glTexCoord4f", (gl_function) glTexCoord4f },
    507       { "glTexCoord4fv", (gl_function) glTexCoord4fv },
    508       { "glTexCoord4i", (gl_function) glTexCoord4i },
    509       { "glTexCoord4iv", (gl_function) glTexCoord4iv },
    510       { "glTexCoord4s", (gl_function) glTexCoord4s },
    511       { "glTexCoord4sv", (gl_function) glTexCoord4sv },
    512       { "glTexEnvf", (gl_function) glTexEnvf },
    513       { "glTexEnvfv", (gl_function) glTexEnvfv },
    514       { "glTexEnvi", (gl_function) glTexEnvi },
    515       { "glTexEnviv", (gl_function) glTexEnviv },
    516       { "glTexGend", (gl_function) glTexGend },
    517       { "glTexGendv", (gl_function) glTexGendv },
    518       { "glTexGenf", (gl_function) glTexGenf },
    519       { "glTexGenfv", (gl_function) glTexGenfv },
    520       { "glTexGeni", (gl_function) glTexGeni },
    521       { "glTexGeniv", (gl_function) glTexGeniv },
    522       { "glTexImage1D", (gl_function) glTexImage1D },
    523       { "glTexImage2D", (gl_function) glTexImage2D },
    524       { "glTexParameterf", (gl_function) glTexParameterf },
    525       { "glTexParameterfv", (gl_function) glTexParameterfv },
    526       { "glTexParameteri", (gl_function) glTexParameteri },
    527       { "glTexParameteriv", (gl_function) glTexParameteriv },
    528       { "glTranslated", (gl_function) glTranslated },
    529       { "glTranslatef", (gl_function) glTranslatef },
    530       { "glVertex2d", (gl_function) glVertex2d },
    531       { "glVertex2dv", (gl_function) glVertex2dv },
    532       { "glVertex2f", (gl_function) glVertex2f },
    533       { "glVertex2fv", (gl_function) glVertex2fv },
    534       { "glVertex2i", (gl_function) glVertex2i },
    535       { "glVertex2iv", (gl_function) glVertex2iv },
    536       { "glVertex2s", (gl_function) glVertex2s },
    537       { "glVertex2sv", (gl_function) glVertex2sv },
    538       { "glVertex3d", (gl_function) glVertex3d },
    539       { "glVertex3dv", (gl_function) glVertex3dv },
    540       { "glVertex3f", (gl_function) glVertex3f },
    541       { "glVertex3fv", (gl_function) glVertex3fv },
    542       { "glVertex3i", (gl_function) glVertex3i },
    543       { "glVertex3iv", (gl_function) glVertex3iv },
    544       { "glVertex3s", (gl_function) glVertex3s },
    545       { "glVertex3sv", (gl_function) glVertex3sv },
    546       { "glVertex4d", (gl_function) glVertex4d },
    547       { "glVertex4dv", (gl_function) glVertex4dv },
    548       { "glVertex4f", (gl_function) glVertex4f },
    549       { "glVertex4fv", (gl_function) glVertex4fv },
    550       { "glVertex4i", (gl_function) glVertex4i },
    551       { "glVertex4iv", (gl_function) glVertex4iv },
    552       { "glVertex4s", (gl_function) glVertex4s },
    553       { "glVertex4sv", (gl_function) glVertex4sv },
    554       { "glViewport", (gl_function) glViewport },
    555 
    556       /* OpenGL 1.1 functions */
    557       { "glAreTexturesResident", (gl_function) glAreTexturesResident },
    558       { "glArrayElement", (gl_function) glArrayElement },
    559       { "glBindTexture", (gl_function) glBindTexture },
    560       { "glColorPointer", (gl_function) glColorPointer },
    561       { "glCopyTexImage1D", (gl_function) glCopyTexImage1D },
    562       { "glCopyTexImage2D", (gl_function) glCopyTexImage2D },
    563       { "glCopyTexSubImage1D", (gl_function) glCopyTexSubImage1D },
    564       { "glCopyTexSubImage2D", (gl_function) glCopyTexSubImage2D },
    565       { "glDeleteTextures", (gl_function) glDeleteTextures },
    566       { "glDisableClientState", (gl_function) glDisableClientState },
    567       { "glDrawArrays", (gl_function) glDrawArrays },
    568       { "glDrawElements", (gl_function) glDrawElements },
    569       { "glEdgeFlagPointer", (gl_function) glEdgeFlagPointer },
    570       { "glEnableClientState", (gl_function) glEnableClientState },
    571       { "glGenTextures", (gl_function) glGenTextures },
    572       { "glGetPointerv", (gl_function) glGetPointerv },
    573       { "glIndexPointer", (gl_function) glIndexPointer },
    574       { "glIndexub", (gl_function) glIndexub },
    575       { "glIndexubv", (gl_function) glIndexubv },
    576       { "glInterleavedArrays", (gl_function) glInterleavedArrays },
    577       { "glIsTexture", (gl_function) glIsTexture },
    578       { "glNormalPointer", (gl_function) glNormalPointer },
    579       { "glPopClientAttrib", (gl_function) glPopClientAttrib },
    580       { "glPrioritizeTextures", (gl_function) glPrioritizeTextures },
    581       { "glPushClientAttrib", (gl_function) glPushClientAttrib },
    582       { "glTexCoordPointer", (gl_function) glTexCoordPointer },
    583       { "glTexSubImage1D", (gl_function) glTexSubImage1D },
    584       { "glTexSubImage2D", (gl_function) glTexSubImage2D },
    585       { "glVertexPointer", (gl_function) glVertexPointer },
    586 
    587       /* OpenGL 1.2 functions */
    588       { "glCopyTexSubImage3D", (gl_function) glCopyTexSubImage3D },
    589       { "glDrawRangeElements", (gl_function) glDrawRangeElements },
    590       { "glTexImage3D", (gl_function) glTexImage3D },
    591       { "glTexSubImage3D", (gl_function) glTexSubImage3D },
    592 
    593       /* ARB_imaging functions */
    594       { "glBlendColor", (gl_function) glBlendColor },
    595       { "glBlendEquation", (gl_function) glBlendEquation },
    596       { "glColorSubTable", (gl_function) glColorSubTable },
    597       { "glColorTable", (gl_function) glColorTable },
    598       { "glColorTableParameterfv", (gl_function) glColorTableParameterfv },
    599       { "glColorTableParameteriv", (gl_function) glColorTableParameteriv },
    600       { "glConvolutionFilter1D", (gl_function) glConvolutionFilter1D },
    601       { "glConvolutionFilter2D", (gl_function) glConvolutionFilter2D },
    602       { "glConvolutionParameterf", (gl_function) glConvolutionParameterf },
    603       { "glConvolutionParameterfv", (gl_function) glConvolutionParameterfv },
    604       { "glConvolutionParameteri", (gl_function) glConvolutionParameteri },
    605       { "glConvolutionParameteriv", (gl_function) glConvolutionParameteriv },
    606       { "glCopyColorSubTable", (gl_function) glCopyColorSubTable },
    607       { "glCopyColorTable", (gl_function) glCopyColorTable },
    608       { "glCopyConvolutionFilter1D", (gl_function) glCopyConvolutionFilter1D },
    609       { "glCopyConvolutionFilter2D", (gl_function) glCopyConvolutionFilter2D },
    610       { "glGetColorTable", (gl_function) glGetColorTable },
    611       { "glGetColorTableParameterfv", (gl_function) glGetColorTableParameterfv },
    612       { "glGetColorTableParameteriv", (gl_function) glGetColorTableParameteriv },
    613       { "glGetConvolutionFilter", (gl_function) glGetConvolutionFilter },
    614       { "glGetConvolutionParameterfv", (gl_function) glGetConvolutionParameterfv },
    615       { "glGetConvolutionParameteriv", (gl_function) glGetConvolutionParameteriv },
    616       { "glGetHistogram", (gl_function) glGetHistogram },
    617       { "glGetHistogramParameterfv", (gl_function) glGetHistogramParameterfv },
    618       { "glGetHistogramParameteriv", (gl_function) glGetHistogramParameteriv },
    619       { "glGetMinmax", (gl_function) glGetMinmax },
    620       { "glGetMinmaxParameterfv", (gl_function) glGetMinmaxParameterfv },
    621       { "glGetMinmaxParameteriv", (gl_function) glGetMinmaxParameteriv },
    622       { "glGetSeparableFilter", (gl_function) glGetSeparableFilter },
    623       { "glHistogram", (gl_function) glHistogram },
    624       { "glMinmax", (gl_function) glMinmax },
    625       { "glResetHistogram", (gl_function) glResetHistogram },
    626       { "glResetMinmax", (gl_function) glResetMinmax },
    627       { "glSeparableFilter2D", (gl_function) glSeparableFilter2D },
    628 
    629       /* GL_EXT_paletted_texture */
    630       { "glColorTableEXT", (gl_function) glColorTableEXT },
    631       { "glColorSubTableEXT", (gl_function) glColorSubTableEXT },
    632       { "glGetColorTableEXT", (gl_function) glGetColorTableEXT },
    633       { "glGetColorTableParameterfvEXT", (gl_function) glGetColorTableParameterfvEXT },
    634       { "glGetColorTableParameterivEXT", (gl_function) glGetColorTableParameterivEXT },
    635 
    636       /* GL_EXT_compiled_vertex_array */
    637       { "glLockArraysEXT", (gl_function) glLockArraysEXT },
    638       { "glUnlockArraysEXT", (gl_function) glUnlockArraysEXT },
    639 
    640       /* GL_EXT_point_parameters */
    641       { "glPointParameterfEXT", (gl_function) glPointParameterfEXT },
    642       { "glPointParameterfvEXT", (gl_function) glPointParameterfvEXT },
    643 
    644       /* GL_EXT_polygon_offset */
    645       { "glPolygonOffsetEXT", (gl_function) glPolygonOffsetEXT },
    646 
    647       /* GL_EXT_blend_minmax */
    648       { "glBlendEquationEXT", (gl_function) glBlendEquationEXT },
    649 
    650       /* GL_EXT_blend_color */
    651       { "glBlendColorEXT", (gl_function) glBlendColorEXT },
    652 
    653       /* GL_EXT_vertex_arrays */
    654       { "glVertexPointerEXT", (gl_function) glVertexPointerEXT },
    655       { "glNormalPointerEXT", (gl_function) glNormalPointerEXT },
    656       { "glColorPointerEXT", (gl_function) glColorPointerEXT },
    657       { "glIndexPointerEXT", (gl_function) glIndexPointerEXT },
    658       { "glTexCoordPointerEXT", (gl_function) glTexCoordPointerEXT },
    659       { "glEdgeFlagPointerEXT", (gl_function) glEdgeFlagPointerEXT },
    660       { "glGetPointervEXT", (gl_function) glGetPointervEXT },
    661       { "glArrayElementEXT", (gl_function) glArrayElementEXT },
    662       { "glDrawArraysEXT", (gl_function) glDrawArraysEXT },
    663 
    664       /* GL_EXT_texture_object */
    665       { "glGenTexturesEXT", (gl_function) glGenTexturesEXT },
    666       { "glDeleteTexturesEXT", (gl_function) glDeleteTexturesEXT },
    667       { "glBindTextureEXT", (gl_function) glBindTextureEXT },
    668       { "glPrioritizeTexturesEXT", (gl_function) glPrioritizeTexturesEXT },
    669       { "glAreTexturesResidentEXT", (gl_function) glAreTexturesResidentEXT },
    670       { "glIsTextureEXT", (gl_function) glIsTextureEXT },
    671 
    672       /* GL_EXT_texture3D */
    673       { "glTexImage3DEXT", (gl_function) glTexImage3DEXT },
    674       { "glTexSubImage3DEXT", (gl_function) glTexSubImage3DEXT },
    675       { "glCopyTexSubImage3DEXT", (gl_function) glCopyTexSubImage3DEXT },
    676 
    677       /* GL_ARB_multitexture */
    678       { "glActiveTextureARB", (gl_function) glActiveTextureARB },
    679       { "glClientActiveTextureARB", (gl_function) glClientActiveTextureARB },
    680       { "glMultiTexCoord1dARB", (gl_function) glMultiTexCoord1dARB },
    681       { "glMultiTexCoord1dvARB", (gl_function) glMultiTexCoord1dvARB },
    682       { "glMultiTexCoord1fARB", (gl_function) glMultiTexCoord1fARB },
    683       { "glMultiTexCoord1fvARB", (gl_function) glMultiTexCoord1fvARB },
    684       { "glMultiTexCoord1iARB", (gl_function) glMultiTexCoord1iARB },
    685       { "glMultiTexCoord1ivARB", (gl_function) glMultiTexCoord1ivARB },
    686       { "glMultiTexCoord1sARB", (gl_function) glMultiTexCoord1sARB },
    687       { "glMultiTexCoord1svARB", (gl_function) glMultiTexCoord1svARB },
    688       { "glMultiTexCoord2dARB", (gl_function) glMultiTexCoord2dARB },
    689       { "glMultiTexCoord2dvARB", (gl_function) glMultiTexCoord2dvARB },
    690       { "glMultiTexCoord2fARB", (gl_function) glMultiTexCoord2fARB },
    691       { "glMultiTexCoord2fvARB", (gl_function) glMultiTexCoord2fvARB },
    692       { "glMultiTexCoord2iARB", (gl_function) glMultiTexCoord2iARB },
    693       { "glMultiTexCoord2ivARB", (gl_function) glMultiTexCoord2ivARB },
    694       { "glMultiTexCoord2sARB", (gl_function) glMultiTexCoord2sARB },
    695       { "glMultiTexCoord2svARB", (gl_function) glMultiTexCoord2svARB },
    696       { "glMultiTexCoord3dARB", (gl_function) glMultiTexCoord3dARB },
    697       { "glMultiTexCoord3dvARB", (gl_function) glMultiTexCoord3dvARB },
    698       { "glMultiTexCoord3fARB", (gl_function) glMultiTexCoord3fARB },
    699       { "glMultiTexCoord3fvARB", (gl_function) glMultiTexCoord3fvARB },
    700       { "glMultiTexCoord3iARB", (gl_function) glMultiTexCoord3iARB },
    701       { "glMultiTexCoord3ivARB", (gl_function) glMultiTexCoord3ivARB },
    702       { "glMultiTexCoord3sARB", (gl_function) glMultiTexCoord3sARB },
    703       { "glMultiTexCoord3svARB", (gl_function) glMultiTexCoord3svARB },
    704       { "glMultiTexCoord4dARB", (gl_function) glMultiTexCoord4dARB },
    705       { "glMultiTexCoord4dvARB", (gl_function) glMultiTexCoord4dvARB },
    706       { "glMultiTexCoord4fARB", (gl_function) glMultiTexCoord4fARB },
    707       { "glMultiTexCoord4fvARB", (gl_function) glMultiTexCoord4fvARB },
    708       { "glMultiTexCoord4iARB", (gl_function) glMultiTexCoord4iARB },
    709       { "glMultiTexCoord4ivARB", (gl_function) glMultiTexCoord4ivARB },
    710       { "glMultiTexCoord4sARB", (gl_function) glMultiTexCoord4sARB },
    711       { "glMultiTexCoord4svARB", (gl_function) glMultiTexCoord4svARB },
    712 
    713       /* GL_INGR_blend_func_separate */
    714       { "glBlendFuncSeparateINGR", (gl_function) glBlendFuncSeparateINGR },
    715 
    716       /* GL_MESA_window_pos */
    717       { "glWindowPos2iMESA", (gl_function) glWindowPos2iMESA },
    718       { "glWindowPos2sMESA", (gl_function) glWindowPos2sMESA },
    719       { "glWindowPos2fMESA", (gl_function) glWindowPos2fMESA },
    720       { "glWindowPos2dMESA", (gl_function) glWindowPos2dMESA },
    721       { "glWindowPos2ivMESA", (gl_function) glWindowPos2ivMESA },
    722       { "glWindowPos2svMESA", (gl_function) glWindowPos2svMESA },
    723       { "glWindowPos2fvMESA", (gl_function) glWindowPos2fvMESA },
    724       { "glWindowPos2dvMESA", (gl_function) glWindowPos2dvMESA },
    725       { "glWindowPos3iMESA", (gl_function) glWindowPos3iMESA },
    726       { "glWindowPos3sMESA", (gl_function) glWindowPos3sMESA },
    727       { "glWindowPos3fMESA", (gl_function) glWindowPos3fMESA },
    728       { "glWindowPos3dMESA", (gl_function) glWindowPos3dMESA },
    729       { "glWindowPos3ivMESA", (gl_function) glWindowPos3ivMESA },
    730       { "glWindowPos3svMESA", (gl_function) glWindowPos3svMESA },
    731       { "glWindowPos3fvMESA", (gl_function) glWindowPos3fvMESA },
    732       { "glWindowPos3dvMESA", (gl_function) glWindowPos3dvMESA },
    733       { "glWindowPos4iMESA", (gl_function) glWindowPos4iMESA },
    734       { "glWindowPos4sMESA", (gl_function) glWindowPos4sMESA },
    735       { "glWindowPos4fMESA", (gl_function) glWindowPos4fMESA },
    736       { "glWindowPos4dMESA", (gl_function) glWindowPos4dMESA },
    737       { "glWindowPos4ivMESA", (gl_function) glWindowPos4ivMESA },
    738       { "glWindowPos4svMESA", (gl_function) glWindowPos4svMESA },
    739       { "glWindowPos4fvMESA", (gl_function) glWindowPos4fvMESA },
    740       { "glWindowPos4dvMESA", (gl_function) glWindowPos4dvMESA },
    741 
    742       /* GL_MESA_resize_buffers */
    743       { "glResizeBuffersMESA", (gl_function) glResizeBuffersMESA },
    744 
    745       /* GL_EXT_compiled_vertex_array */
    746       { "glLockArraysEXT", (gl_function) glLockArraysEXT },
    747       { "glUnlockArraysEXT", (gl_function) glUnlockArraysEXT },
    748 
    749       { NULL, NULL } /* end of list token */
    750    };
    751    GLuint i;
    752 
    753    for (i = 0; procTable[i].address; i++) {
    754       if (strcmp((const char *) procName, procTable[i].name) == 0)
    755          return procTable[i].address;
    756    }
    757 
    758    return NULL;
    759 }
Note: See TracChangeset for help on using the changeset viewer.