Gizmo3D

gzGraphicsAbstractionLayer.h

Go to the documentation of this file.
00001 //******************************************************************************
00002 // File         : gzGraphicsAbstractionLayer.h
00003 // Module       : gzGraph
00004 // Description  : Class implementation of the GAL classes
00005 // Author       : Anders Modén      
00006 // Product      : Gizmo3D 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden
00009 //          
00010 // NOTE:    Gizmo3D is a high performance 3D Scene Graph and effect visualisation 
00011 //          C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for  
00012 //          usage in Game or VisSim development.
00013 //
00014 //
00015 // Revision History...                          
00016 //                                  
00017 // Who  Date    Description                     
00018 //                                  
00019 // AMO  990103  Created file    
00020 //
00021 //******************************************************************************
00022 
00023 #ifndef __GZ_GRAPHICS_ABSTRACTION_LAYER_H__
00024 #define __GZ_GRAPHICS_ABSTRACTION_LAYER_H__
00025 
00033 #include "gzBasicTypes.h"
00034 #include "gzBase.h"
00035 #include "gzMatrix.h"
00036 
00037 #if defined GZ_WINDOWS
00038 
00039 // ----------------------------- GZ_WINDOWS --------------------------------------------
00040 
00041 typedef HDC                         gzDeviceContext;
00042 typedef gzInt                       gzVisual;
00043 typedef gzVoid *                    gzRenderContext;
00044 
00045 typedef HWND                        gzWindowHandle;     
00046 typedef HWND                        gzWindowContext;    
00047 
00048 typedef UINT                        gzTimerHandle;
00049 
00050 #elif defined GZ_GLX    
00051 // ------------------------------ X11 ---------------------------------------------
00052 
00053 #include <X11/Xlib.h>
00054 #include <X11/Intrinsic.h>
00055 #include <GL/glx.h>
00056 
00057 typedef Display *                   gzDeviceContext;
00058 typedef XVisualInfo *               gzVisual;
00059 typedef GLXContext                  gzRenderContext;
00060 typedef Widget                      gzWindowHandle;
00061 typedef Window                      gzWindowContext;
00062 typedef XtIntervalId                gzTimerHandle;
00063 
00064 
00065 #elif defined GZ_MAC 
00066 // ----------------------------- MAC OS X -----------------------------------------
00067 
00068 #include <Carbon/Carbon.h>
00069 #include <AGL/agl.h>
00070 
00071 typedef GDHandle                    gzDeviceContext;
00072 typedef AGLPixelFormat              gzVisual;
00073 typedef AGLContext                  gzRenderContext;
00074 typedef ControlRef                  gzWindowHandle;
00075 typedef WindowRef                   gzWindowContext;
00076 
00077 typedef EventLoopTimerRef           gzTimerHandle;
00078 
00079 
00080 #endif
00081 
00082 
00083 // Some forward declarations for context management
00084 class gzContext;
00085 class gzGraphicsFormat;
00086 
00087 
00088 //--------------------- gzGraphicsAbstractionLayer -------------------------------------------
00089 
00090 class GZ_GRAPH_EXPORT gzGraphicsAbstractionLayer
00091 {
00092 public:
00093 
00094     static  gzVoid  (GZ_CALLBACK *  imp_gzBegin)(gzEnum);
00095     static  gzVoid  (GZ_CALLBACK *  imp_gzEnd)(gzVoid);
00096 
00097     static  gzVoid  (GZ_CALLBACK *  imp_gzEnable)(gzEnum);
00098     static  gzVoid  (GZ_CALLBACK *  imp_gzDisable)(gzEnum);
00099     static  gzVoid  (GZ_CALLBACK *  imp_gzEnableClientState)(gzEnum);
00100     static  gzVoid  (GZ_CALLBACK *  imp_gzDisableClientState)(gzEnum);
00101 
00102     static  gzVoid  (GZ_CALLBACK *  imp_gzHint)(gzEnum,gzEnum);
00103 
00104     static  gzVoid  (GZ_CALLBACK *  imp_gzFrustum)(gzDouble,gzDouble,gzDouble,gzDouble,gzDouble,gzDouble);
00105     static  gzVoid  (GZ_CALLBACK *  imp_gzOrtho)(gzDouble,gzDouble,gzDouble,gzDouble,gzDouble,gzDouble);
00106     static  gzVoid  (GZ_CALLBACK *  imp_gzViewport)(gzInt,gzInt,gzInt,gzInt);
00107     static  gzVoid  (GZ_CALLBACK *  imp_gzScissor)(gzInt,gzInt,gzInt,gzInt);
00108     static  gzVoid  (GZ_CALLBACK *  imp_gzDepthRange)(gzDouble,gzDouble);
00109 
00110 
00111     static  gzVoid  (GZ_CALLBACK *  imp_gzColor4d)(gzDouble,gzDouble,gzDouble,gzDouble);
00112     static  gzVoid  (GZ_CALLBACK *  imp_gzColor4f)(gzFloat,gzFloat,gzFloat,gzFloat);
00113     static  gzVoid  (GZ_CALLBACK *  imp_gzColor4r)(gzReal,gzReal,gzReal,gzReal);
00114     static  gzVoid  (GZ_CALLBACK *  imp_gzColor4dv)(const gzDouble *);
00115     static  gzVoid  (GZ_CALLBACK *  imp_gzColor4fv)(const gzFloat *);
00116     static  gzVoid  (GZ_CALLBACK *  imp_gzColor4rv)(const gzReal *);
00117 
00118     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3d)(gzDouble,gzDouble,gzDouble);
00119     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3r)(gzReal,gzReal,gzReal);
00120     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3f)(gzFloat,gzFloat,gzFloat);
00121     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3dv)(const gzDouble *);
00122     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3rv)(const gzReal*);
00123     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3fv)(const gzFloat*);
00124     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex2i)(gzInt,gzInt);
00125     static  gzVoid  (GZ_CALLBACK *  imp_gzVertex3i)(gzInt,gzInt,gzInt);
00126 
00127     static  gzVoid  (GZ_CALLBACK *  imp_gzNormal3d)(gzDouble,gzDouble,gzDouble);
00128     static  gzVoid  (GZ_CALLBACK *  imp_gzNormal3f)(gzFloat,gzFloat,gzFloat);
00129     static  gzVoid  (GZ_CALLBACK *  imp_gzNormal3r)(gzReal,gzReal,gzReal);
00130     static  gzVoid  (GZ_CALLBACK *  imp_gzNormal3dv)(const gzDouble *);
00131     static  gzVoid  (GZ_CALLBACK *  imp_gzNormal3fv)(const gzFloat *);
00132     static  gzVoid  (GZ_CALLBACK *  imp_gzNormal3rv)(const gzReal *);
00133 
00134 
00135     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoord2d)(gzDouble,gzDouble);
00136     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoord2f)(gzFloat,gzFloat);
00137     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoord2r)(gzReal,gzReal);
00138     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoord2dv)(const gzDouble *);
00139     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoord2fv)(const gzFloat *);
00140     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoord2rv)(const gzReal *);
00141 
00142     static  gzVoid  (GZ_CALLBACK *  imp_gzEdgeFlag)(gzBool);
00143 
00144     static  gzVoid  (GZ_CALLBACK *  imp_gzMatrixMode)(gzEnum);
00145     static  gzVoid  (GZ_CALLBACK *  imp_gzLoadIdentity)(gzVoid);
00146 
00147     static  gzVoid  (GZ_CALLBACK *  imp_gzLoadMatrixd)(const gzDouble *);
00148     static  gzVoid  (GZ_CALLBACK *  imp_gzLoadMatrixf)(const gzFloat *);
00149     static  gzVoid  (GZ_CALLBACK *  imp_gzLoadMatrixr)(const gzReal *);
00150 
00151     static  gzVoid  (GZ_CALLBACK *  imp_gzMultMatrixd)(const gzDouble *);
00152     static  gzVoid  (GZ_CALLBACK *  imp_gzMultMatrixf)(const gzFloat *);
00153     static  gzVoid  (GZ_CALLBACK *  imp_gzMultMatrixr)(const gzReal *);
00154 
00155     static  gzVoid  (GZ_CALLBACK *  imp_gzPushMatrix)(gzVoid);
00156     static  gzVoid  (GZ_CALLBACK *  imp_gzPopMatrix)(gzVoid);
00157 
00158     static  gzVoid  (GZ_CALLBACK *  imp_gzRotated)(gzDouble,gzDouble,gzDouble,gzDouble);
00159     static  gzVoid  (GZ_CALLBACK *  imp_gzRotatef)(gzFloat,gzFloat,gzFloat,gzFloat);
00160     static  gzVoid  (GZ_CALLBACK *  imp_gzRotater)(gzReal,gzReal,gzReal,gzReal);
00161 
00162     static  gzVoid  (GZ_CALLBACK *  imp_gzTranslated)(gzDouble,gzDouble,gzDouble);
00163     static  gzVoid  (GZ_CALLBACK *  imp_gzTranslatef)(gzFloat,gzFloat,gzFloat);
00164     static  gzVoid  (GZ_CALLBACK *  imp_gzTranslater)(gzReal,gzReal,gzReal);
00165 
00166     static  gzVoid  (GZ_CALLBACK *  imp_gzScaled)(gzDouble,gzDouble,gzDouble);
00167     static  gzVoid  (GZ_CALLBACK *  imp_gzScalef)(gzFloat,gzFloat,gzFloat);
00168     static  gzVoid  (GZ_CALLBACK *  imp_gzScaler)(gzReal,gzReal,gzReal);
00169 
00170     static  gzVoid  (GZ_CALLBACK *  imp_gzPointSize)(gzFloat);
00171     static  gzVoid  (GZ_CALLBACK *  imp_gzDrawBuffer)(gzEnum);
00172     static  gzVoid  (GZ_CALLBACK *  imp_gzLineWidth)(gzFloat);
00173     static  gzVoid  (GZ_CALLBACK *  imp_gzLineStipple)(gzInt,gzUShort);
00174     
00175 
00176     static  gzVoid  (GZ_CALLBACK *  imp_gzPolygonMode)(gzEnum,gzEnum);
00177     static  gzVoid  (GZ_CALLBACK *  imp_gzCullFace)(gzEnum);
00178     static  gzVoid  (GZ_CALLBACK *  imp_gzDepthFunc)(gzEnum);
00179 
00180     static  gzVoid  (GZ_CALLBACK *  imp_gzDepthMask)(gzBool);
00181     static  gzVoid  (GZ_CALLBACK *  imp_gzColorMask)(gzBool,gzBool,gzBool,gzBool);
00182 
00183     static  gzVoid  (GZ_CALLBACK *  imp_gzBlendFunc)(gzEnum,gzEnum);
00184 
00185     static  gzVoid  (GZ_CALLBACK *  imp_gzPushAttrib)(gzEnumBits);
00186     static  gzVoid  (GZ_CALLBACK *  imp_gzPopAttrib)();
00187 
00188     static  gzVoid  (GZ_CALLBACK *  imp_gzClearColor)(gzFloat,gzFloat,gzFloat,gzFloat);
00189     static  gzVoid  (GZ_CALLBACK *  imp_gzClearDepth)(gzDouble);
00190     static  gzVoid  (GZ_CALLBACK *  imp_gzClearStencil)(gzInt);
00191     static  gzVoid  (GZ_CALLBACK *  imp_gzClear)(gzBitfield);
00192 
00193     static  gzVoid  (GZ_CALLBACK *  imp_gzStencilFunc)(gzEnum,gzInt,gzUInt);
00194     static  gzVoid  (GZ_CALLBACK *  imp_gzStencilOp)(gzEnum,gzEnum,gzEnum);
00195     static  gzVoid  (GZ_CALLBACK *  imp_gzAlphaFunc)(gzEnum,gzFloat);
00196 
00197     static  gzVoid  (GZ_CALLBACK *  imp_gzTexParameteri)(gzEnum,gzEnum,gzInt);
00198     static  gzVoid  (GZ_CALLBACK *  imp_gzTexParameterfv)(gzEnum,gzEnum,const gzFloat *);
00199     static  gzVoid  (GZ_CALLBACK *  imp_gzTexEnvi)(gzEnum,gzEnum,gzInt);
00200     static  gzVoid  (GZ_CALLBACK *  imp_gzTexEnvfv)(gzEnum,gzEnum,const gzFloat *);
00201 
00202     static  gzVoid  (GZ_CALLBACK *  imp_gzGetTexLevelParameteriv)(gzEnum ,gzInt , gzEnum , gzInt *);
00203 
00204     static  gzVoid  (GZ_CALLBACK *  imp_gzTexGenfv)(gzEnum,gzEnum,const gzFloat *);
00205     static  gzVoid  (GZ_CALLBACK *  imp_gzTexGendv)(gzEnum,gzEnum,const gzDouble *);
00206     static  gzVoid  (GZ_CALLBACK *  imp_gzTexGenrv)(gzEnum,gzEnum,const gzReal *);
00207 
00208     static  gzVoid  (GZ_CALLBACK *  imp_gzPixelStorei)(gzEnum,gzInt);
00209     static  gzVoid  (GZ_CALLBACK *  imp_gzPixelMapfv)(gzEnum,gzInt,const gzFloat *);
00210     static  gzVoid  (GZ_CALLBACK *  imp_gzPixelTransferi)(gzEnum,gzInt);
00211     static  gzVoid  (GZ_CALLBACK *  imp_gzPixelTransferf)(gzEnum,gzFloat);
00212 
00213     static  gzVoid  (GZ_CALLBACK *  imp_gzTexImage2D)(gzEnum ,gzInt,gzInt, gzInt, gzInt,gzInt,gzEnum,gzEnum,const gzVoid *);  
00214     static  gzVoid  (GZ_CALLBACK *  imp_gzTexSubImage2D)(gzEnum ,gzInt, gzInt, gzInt,gzInt,gzInt,gzEnum,gzEnum,const gzVoid *);  
00215 
00216     static  gzVoid  (GZ_CALLBACK *  imp_gzCompressedTexImage2D)(gzEnum target , gzInt level ,gzEnum internalFormat, gzInt width, gzInt height, gzInt border, gzInt imageSize,const gzVoid * data);  
00217     static  gzVoid  (GZ_CALLBACK *  imp_gzCompressedTexSubImage2D)(gzEnum target , gzInt level ,gzInt , gzInt , gzInt , gzInt , gzInt imageSize,const gzVoid * data);  
00218 
00219     static  gzVoid  (GZ_CALLBACK *  imp_gzReadPixels)(gzInt,gzInt, gzInt, gzInt,gzEnum,gzEnum,const gzVoid *);  
00220     static  gzVoid  (GZ_CALLBACK *  imp_gzDrawPixels)(gzInt, gzInt,gzEnum,gzEnum,const gzVoid *);  
00221     static  gzVoid  (GZ_CALLBACK *  imp_gzBitmap)(gzInt, gzInt,gzFloat,gzFloat,gzFloat,gzFloat,const gzVoid *);  
00222     static  gzVoid  (GZ_CALLBACK *  imp_gzCopyPixels)(gzInt,gzInt,gzULong,gzULong,gzEnum);
00223 
00224     static  gzVoid  (GZ_CALLBACK *  imp_gzRasterPos3d)(gzDouble,gzDouble,gzDouble);  
00225     static  gzVoid  (GZ_CALLBACK *  imp_gzRasterPos3f)(gzFloat,gzFloat,gzFloat);  
00226     static  gzVoid  (GZ_CALLBACK *  imp_gzRasterPos3r)(gzReal,gzReal,gzReal);  
00227 
00228 
00229     static  gzVoid  (GZ_CALLBACK *  imp_gzGetDoublev)(gzEnum, gzDouble *);
00230     static  gzVoid  (GZ_CALLBACK *  imp_gzGetFloatv)(gzEnum, gzFloat *);
00231     static  gzVoid  (GZ_CALLBACK *  imp_gzGetRealv)(gzEnum, gzReal *);
00232     static  gzVoid  (GZ_CALLBACK *  imp_gzGetIntegerv)(gzEnum, gzInt *);
00233     static  gzVoid  (GZ_CALLBACK *  imp_gzGetBooleanv)(gzEnum, gzBool *);
00234 
00235     static  const gzUByte *(GZ_CALLBACK * imp_gzGetString)(gzEnum);
00236 
00237     static  gzBool  (GZ_CALLBACK *  imp_gzIsEnabled)(gzEnum);
00238 
00239 
00240     static  gzVoid  (GZ_CALLBACK *  imp_gzEdgeFlagPointer)(gzInt,const gzUByte *);
00241     static  gzVoid  (GZ_CALLBACK *  imp_gzColorPointer)(gzInt,gzEnum,gzInt,const gzVoid *);
00242     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexPointer)(gzInt,gzEnum,gzInt,const  gzVoid *);
00243     static  gzVoid  (GZ_CALLBACK *  imp_gzNormalPointer)(gzEnum,gzInt,const gzVoid *);
00244     static  gzVoid  (GZ_CALLBACK *  imp_gzIndexPointer)(gzEnum,gzInt,const gzVoid *);
00245     static  gzVoid  (GZ_CALLBACK *  imp_gzTexCoordPointer)(gzInt,gzEnum,gzInt,const gzVoid *);
00246     static  gzVoid  (GZ_CALLBACK *  imp_gzDrawArrays)(gzEnum,gzInt,gzInt);
00247     static  gzVoid  (GZ_CALLBACK *  imp_gzArrayElement)(gzInt);
00248     static  gzVoid  (GZ_CALLBACK *  imp_gzDrawElements)(gzEnum,gzLong,gzEnum,const gzVoid *);
00249     static  gzVoid  (GZ_CALLBACK *  imp_gzDrawRangeElements)(gzEnum, gzUInt start, gzUInt end, gzLong count,  gzEnum type, const gzVoid *indices);
00250 
00251     static  gzVoid  (GZ_CALLBACK *  imp_gzClientActiveTexture)(gzEnum);
00252     static  gzVoid  (GZ_CALLBACK *  imp_gzActiveTexture)(gzEnum);
00253 
00254     static  gzEnum  (GZ_CALLBACK *  imp_gzGetError)(gzVoid);
00255 
00256 
00257     static  gzVoid  (GZ_CALLBACK *  imp_gzBindTexture)(gzEnum,gzUInt);
00258     static  gzVoid  (GZ_CALLBACK *  imp_gzGenTextures)(gzInt,gzUInt *);
00259     static  gzVoid  (GZ_CALLBACK *  imp_gzDeleteTextures)(gzInt,const gzUInt *);
00260     static  gzBool  (GZ_CALLBACK *  imp_gzIsTexture)(gzUInt);
00261     static  gzBool  (GZ_CALLBACK *  imp_gzAreTexturesResident)(gzInt,const gzUInt *,gzBool *);
00262     static  gzVoid  (GZ_CALLBACK *  imp_gzPrioritizeTextures)(gzInt,const gzUInt *,const gzFloat *);
00263 
00264     static  gzVoid  (GZ_CALLBACK *  imp_gzLightfv)(gzEnum light,gzEnum name,const gzFloat *params);
00265     static  gzVoid  (GZ_CALLBACK *  imp_gzLightf)(gzEnum light,gzEnum name,gzFloat param);
00266     static  gzVoid  (GZ_CALLBACK *  imp_gzLightModelfv)(gzEnum name,const gzFloat *params);
00267     static  gzVoid  (GZ_CALLBACK *  imp_gzLightModeli)(gzEnum name,gzInt param);
00268 
00269     static  gzVoid  (GZ_CALLBACK *  imp_gzClipPlane)(gzEnum face,const gzDouble *);
00270     static  gzVoid  (GZ_CALLBACK *  imp_gzFrontFace)(gzEnum face);
00271 
00272     static  gzVoid  (GZ_CALLBACK *  imp_gzMaterialfv)(gzEnum face,gzEnum name,const gzFloat *params);
00273     static  gzVoid  (GZ_CALLBACK *  imp_gzMaterialf)(gzEnum face,gzEnum name,gzFloat param);
00274     static  gzVoid  (GZ_CALLBACK *  imp_gzColorMaterial)(gzEnum face,gzEnum mode);
00275 
00276     static  gzVoid  (GZ_CALLBACK *  imp_gzShadeModel)(gzEnum mode);
00277 
00278     static  gzVoid  (GZ_CALLBACK *  imp_gzFogfv)(gzEnum name,const gzFloat *params);
00279     static  gzVoid  (GZ_CALLBACK *  imp_gzFogf)(gzEnum name,const gzFloat param);
00280     static  gzVoid  (GZ_CALLBACK *  imp_gzFogiv)(gzEnum name,const gzInt *params);
00281     static  gzVoid  (GZ_CALLBACK *  imp_gzFogi)(gzEnum name,const gzInt param);
00282     
00283 
00284     static  gzVoid  (GZ_CALLBACK *  imp_gzLockArrays)(gzInt first,gzInt count);
00285     static  gzVoid  (GZ_CALLBACK *  imp_gzUnlockArrays)(gzVoid);
00286 
00287     static  gzVoid  (GZ_CALLBACK *  imp_gzPolygonOffset)(gzFloat,gzFloat);
00288 
00289     static  gzUInt  (GZ_CALLBACK *  imp_gzGenLists)(gzULong);
00290     static  gzVoid  (GZ_CALLBACK *  imp_gzDeleteLists)(gzUInt,gzULong);
00291     static  gzVoid  (GZ_CALLBACK *  imp_gzNewList)(gzUInt,gzEnum);
00292     static  gzVoid  (GZ_CALLBACK *  imp_gzEndList)(gzVoid);
00293     static  gzVoid  (GZ_CALLBACK *  imp_gzCallList)(gzUInt);
00294     static  gzVoid  (GZ_CALLBACK *  imp_gzCallLists)(gzULong,gzEnum,const gzVoid *);
00295 
00296     static  gzVoid  (GZ_CALLBACK *  imp_gzSwapInterval)(gzInt);
00297 
00298     //------------------- Vertex & Fragment programs -------------------------------
00299 
00300     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1s)(gzUInt,gzShort);
00301     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1f)(gzUInt,gzFloat);
00302     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1d)(gzUInt,gzDouble);
00303     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1r)(gzUInt,gzReal);
00304 
00305     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2s)(gzUInt,gzShort,gzShort);
00306     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2f)(gzUInt,gzFloat,gzFloat);
00307     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2d)(gzUInt,gzDouble,gzDouble);
00308     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2r)(gzUInt,gzReal,gzReal);
00309 
00310     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3s)(gzUInt,gzShort,gzShort,gzShort);
00311     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3f)(gzUInt,gzFloat,gzFloat,gzFloat);
00312     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3d)(gzUInt,gzDouble,gzDouble,gzDouble);
00313     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3r)(gzUInt,gzReal,gzReal,gzReal);
00314 
00315     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4s)(gzUInt,gzShort,gzShort,gzShort,gzShort);
00316     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4f)(gzUInt,gzFloat,gzFloat,gzFloat,gzFloat);
00317     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4d)(gzUInt,gzDouble,gzDouble,gzDouble,gzDouble);
00318     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4r)(gzUInt,gzReal,gzReal,gzReal,gzReal);
00319 
00320     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Nub)(gzUInt,gzUByte,gzUByte,gzUByte,gzUByte);
00321 
00322     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1sv)(gzUInt,const gzShort *);
00323     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1fv)(gzUInt,const gzFloat *);
00324     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1dv)(gzUInt,const gzDouble *);
00325     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib1rv)(gzUInt,const gzReal *);
00326 
00327     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2sv)(gzUInt,const gzShort *);
00328     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2fv)(gzUInt,const gzFloat *);
00329     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2dv)(gzUInt,const gzDouble *);
00330     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib2rv)(gzUInt,const gzReal *);
00331 
00332     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3sv)(gzUInt,const gzShort *);
00333     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3fv)(gzUInt,const gzFloat *);
00334     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3dv)(gzUInt,const gzDouble *);
00335     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib3rv)(gzUInt,const gzReal *);
00336 
00337     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4bv)(gzUInt,const gzByte *);
00338     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4sv)(gzUInt,const gzShort *);
00339     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4iv)(gzUInt,const gzInt *);
00340     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4ubv)(gzUInt,const gzUByte *);
00341     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4usv)(gzUInt,const gzUShort *);
00342     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4uiv)(gzUInt,const gzUInt *);
00343     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4fv)(gzUInt,const gzFloat *);
00344     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4dv)(gzUInt,const gzDouble *);
00345     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4rv)(gzUInt,const gzReal *);
00346 
00347     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Nbv)(gzUInt,const gzByte *);
00348     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Nsv)(gzUInt,const gzShort *);
00349     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Niv)(gzUInt,const gzInt *);
00350     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Nubv)(gzUInt,const gzUByte *);
00351     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Nusv)(gzUInt,const gzUShort *);
00352     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttrib4Nuiv)(gzUInt,const gzUInt *);
00353 
00354     static  gzVoid  (GZ_CALLBACK *  imp_gzVertexAttribPointer)(gzUInt,gzInt,gzEnum,gzBool,gzULong,const gzVoid *);
00355 
00356     static  gzVoid  (GZ_CALLBACK *  imp_gzEnableVertexAttribArray)(gzUInt);
00357     static  gzVoid  (GZ_CALLBACK *  imp_gzDisableVertexAttribArray)(gzUInt);
00358 
00359     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramString)(gzEnum,gzEnum,gzULong,const gzVoid *);
00360     static  gzVoid  (GZ_CALLBACK *  imp_gzBindProgram)(gzEnum,gzUInt);
00361     static  gzVoid  (GZ_CALLBACK *  imp_gzDeletePrograms)(gzULong,const gzUInt *);
00362     static  gzVoid  (GZ_CALLBACK *  imp_gzGenPrograms)(gzULong,gzUInt *);
00363 
00364     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramEnvParameter4d)(gzEnum,gzUInt,gzDouble,gzDouble,gzDouble,gzDouble);
00365     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramEnvParameter4dv)(gzEnum,gzUInt,const gzDouble *);
00366     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramEnvParameter4f)(gzEnum,gzUInt,gzFloat,gzFloat,gzFloat,gzFloat);
00367     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramEnvParameter4fv)(gzEnum,gzUInt,const gzFloat *);
00368     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramEnvParameter4r)(gzEnum,gzUInt,gzReal,gzReal,gzReal,gzReal);
00369     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramEnvParameter4rv)(gzEnum,gzUInt,const gzReal *);
00370     
00371     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramLocalParameter4d)(gzEnum,gzUInt,gzDouble,gzDouble,gzDouble,gzDouble);
00372     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramLocalParameter4dv)(gzEnum,gzUInt,const gzDouble *);
00373     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramLocalParameter4f)(gzEnum,gzUInt,gzFloat,gzFloat,gzFloat,gzFloat);
00374     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramLocalParameter4fv)(gzEnum,gzUInt,const gzFloat *);
00375     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramLocalParameter4r)(gzEnum,gzUInt,gzReal,gzReal,gzReal,gzReal);
00376     static  gzVoid  (GZ_CALLBACK *  imp_gzProgramLocalParameter4rv)(gzEnum,gzUInt,const gzReal *);
00377 
00378     static  gzVoid  (GZ_CALLBACK *  imp_gzGetProgramEnvParameterdv)(gzEnum,gzUInt,gzDouble *);
00379     static  gzVoid  (GZ_CALLBACK *  imp_gzGetProgramEnvParameterfv)(gzEnum,gzUInt,gzFloat *);
00380     static  gzVoid  (