00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
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
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
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
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
00084 class gzContext;
00085 class gzGraphicsFormat;
00086
00087
00088
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
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 (