Subversion Repositories Games.Descent

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 pmbaty 1
/*
2
 * This file is part of the DXX-Rebirth project <https://www.dxx-rebirth.com/>.
3
 * It is copyright by its individual contributors, as recorded in the
4
 * project's Git history.  See COPYING.txt at the top level for license
5
 * terms and a link to the Git history.
6
 */
7
/*
8
 *
9
 * dynamic opengl loading - courtesy of Jeff Slutter
10
 *
11
 *
12
 */
13
 
14
#ifndef __LOADGL_H__
15
#define __LOADGL_H__
16
 
17
#ifdef _WIN32
18
#include <windows.h>
19
#define OGLFUNCCALL     __stdcall
20
#else
21
#define OGLFUNCCALL
22
#endif
23
 
24
#include <GL/gl.h>
25
#include "pstypes.h"
26
 
27
//gl extensions.
28
#ifndef GL_ARB_multitexture
29
#define GL_ARB_multitexture 1
30
#define GL_TEXTURE0_ARB 0x84C0
31
#define GL_TEXTURE1_ARB 0x84C1
32
#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
33
#endif
34
 
35
#ifndef GL_SGIS_multitexture
36
#define GL_SGIS_multitexture 1
37
#define GL_TEXTURE0_SGIS 0x835F
38
#define GL_TEXTURE1_SGIS 0x8360
39
#define GL_MAX_TEXTURES_SGIS 0x835D
40
#endif
41
 
42
#ifndef GL_EXT_paletted_texture
43
#define GL_EXT_paletted_texture 1
44
#define GL_COLOR_INDEX8_EXT 0x80E5
45
#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
46
#endif
47
 
48
#ifndef GL_TEXTURE_INDEX_SIZE_EXT
49
#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
50
#endif
51
 
52
#ifndef GL_SCISSOR_TEST
53
#define GL_SCISSOR_TEST 0x0C11
54
#endif
55
 
56
#ifndef GL_CLAMP_TO_EDGE
57
#define GL_CLAMP_TO_EDGE 0x812F
58
#endif
59
 
60
#ifndef GL_NV_register_combiners
61
#define GL_NV_register_combiners 1
62
#define GL_REGISTER_COMBINERS_NV          0x8522
63
#define GL_VARIABLE_A_NV                  0x8523
64
#define GL_VARIABLE_B_NV                  0x8524
65
#define GL_VARIABLE_C_NV                  0x8525
66
#define GL_VARIABLE_D_NV                  0x8526
67
#define GL_VARIABLE_E_NV                  0x8527
68
#define GL_VARIABLE_F_NV                  0x8528
69
#define GL_VARIABLE_G_NV                  0x8529
70
#define GL_CONSTANT_COLOR0_NV             0x852A
71
#define GL_CONSTANT_COLOR1_NV             0x852B
72
#define GL_PRIMARY_COLOR_NV               0x852C
73
#define GL_SECONDARY_COLOR_NV             0x852D
74
#define GL_SPARE0_NV                      0x852E
75
#define GL_SPARE1_NV                      0x852F
76
#define GL_DISCARD_NV                     0x8530
77
#define GL_E_TIMES_F_NV                   0x8531
78
#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
79
#define GL_UNSIGNED_IDENTITY_NV           0x8536
80
#define GL_UNSIGNED_INVERT_NV             0x8537
81
#define GL_EXPAND_NORMAL_NV               0x8538
82
#define GL_EXPAND_NEGATE_NV               0x8539
83
#define GL_HALF_BIAS_NORMAL_NV            0x853A
84
#define GL_HALF_BIAS_NEGATE_NV            0x853B
85
#define GL_SIGNED_IDENTITY_NV             0x853C
86
#define GL_SIGNED_NEGATE_NV               0x853D
87
#define GL_SCALE_BY_TWO_NV                0x853E
88
#define GL_SCALE_BY_FOUR_NV               0x853F
89
#define GL_SCALE_BY_ONE_HALF_NV           0x8540
90
#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541
91
#define GL_COMBINER_INPUT_NV              0x8542
92
#define GL_COMBINER_MAPPING_NV            0x8543
93
#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544
94
#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545
95
#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546
96
#define GL_COMBINER_MUX_SUM_NV            0x8547
97
#define GL_COMBINER_SCALE_NV              0x8548
98
#define GL_COMBINER_BIAS_NV               0x8549
99
#define GL_COMBINER_AB_OUTPUT_NV          0x854A
100
#define GL_COMBINER_CD_OUTPUT_NV          0x854B
101
#define GL_COMBINER_SUM_OUTPUT_NV         0x854C
102
#define GL_MAX_GENERAL_COMBINERS_NV       0x854D
103
#define GL_NUM_GENERAL_COMBINERS_NV       0x854E
104
#define GL_COLOR_SUM_CLAMP_NV             0x854F
105
#define GL_COMBINER0_NV                   0x8550
106
#define GL_COMBINER1_NV                   0x8551
107
#define GL_COMBINER2_NV                   0x8552
108
#define GL_COMBINER3_NV                   0x8553
109
#define GL_COMBINER4_NV                   0x8554
110
#define GL_COMBINER5_NV                   0x8555
111
#define GL_COMBINER6_NV                   0x8556
112
#define GL_COMBINER7_NV                   0x8557
113
#endif
114
 
115
#define GL_SCISSOR_TEST 0x0C11
116
 
117
#ifdef __cplusplus
118
#define OEXTERN extern "C"
119
#else
120
#define OEXTERN extern
121
#define true 1
122
#define false 0
123
#endif
124
 
125
#ifdef DECLARE_VARS
126
#define DEFVAR
127
#else
128
#define DEFVAR  OEXTERN
129
#endif
130
 
131
#define glAlphaFunc dglAlphaFunc
132
#define glBindTexture dglBindTexture
133
#define glBlendFunc dglBlendFunc
134
#define glClear dglClear
135
#define glClearColor dglClearColor
136
#define glColor4f dglColor4f
137
#define glColorPointer dglColorPointer
138
#define glCullFace dglCullFace
139
#define glDeleteTextures dglDeleteTextures
140
#define glDepthFunc dglDepthFunc
141
#define glDepthMask dglDepthMask
142
#define glDisable dglDisable
143
#define glDisableClientState dglDisableClientState
144
#define glDrawArrays dglDrawArrays
145
#define glEnable dglEnable
146
#define glEnableClientState dglEnableClientState
147
#define glEnd dglEnd
148
#define glFinish dglFinish
149
#define glGenTextures dglGenTextures
150
#define glGetFloatv dglGetFloatv
151
#define glGetIntegerv dglGetIntegerv
152
#define glGetString dglGetString
153
#define glGetTexLevelParameteriv dglGetTexLevelParameteriv
154
#define glHint dglHint
155
#define glLineWidth dglLineWidth
156
#define glLoadIdentity dglLoadIdentity
157
#define glMatrixMode dglMatrixMode
158
#define glOrtho dglOrtho
159
#define glPointSize dglPointSize
160
#define glPopMatrix dglPopMatrix
161
#define glPrioritizeTextures dglPrioritizeTextures
162
#define glPushMatrix dglPushMatrix
163
#define glReadBuffer dglReadBuffer
164
#define glReadPixels dglReadPixels
165
#define glScalef dglScalef
166
#define glShadeModel dglShadeModel
167
#define glTexCoordPointer dglTexCoordPointer
168
#define glTexEnvi dglTexEnvi
169
#define glTexImage2D dglTexImage2D
170
#define glTexParameterf dglTexParameterf
171
#define glTexParameteri dglTexParameteri
172
#define glTranslatef dglTranslatef
173
#define glVertexPointer dglVertexPointer
174
#define glViewport dglViewport
175
 
176
typedef void (OGLFUNCCALL *glAlphaFunc_fp)(GLenum func, GLclampf ref);
177
typedef void (OGLFUNCCALL *glBindTexture_fp)(GLenum target, GLuint texture);
178
typedef void (OGLFUNCCALL *glBlendFunc_fp)(GLenum sfactor, GLenum dfactor);
179
typedef void (OGLFUNCCALL *glClear_fp)(GLbitfield mask);
180
typedef void (OGLFUNCCALL *glClearColor_fp)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
181
typedef void (OGLFUNCCALL *glColor4f_fp)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
182
typedef void (OGLFUNCCALL *glColorPointer_fp)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
183
typedef void (OGLFUNCCALL *glCullFace_fp)(GLenum mode);
184
typedef void (OGLFUNCCALL *glDeleteTextures_fp)(GLsizei n, const GLuint *textures);
185
typedef void (OGLFUNCCALL *glDepthFunc_fp)(GLenum func);
186
typedef void (OGLFUNCCALL *glDepthMask_fp)(GLboolean flag);
187
typedef void (OGLFUNCCALL *glDisable_fp)(GLenum cap);
188
typedef void (OGLFUNCCALL *glDisableClientState_fp)(GLenum array);
189
typedef void (OGLFUNCCALL *glDrawArrays_fp)(GLenum mode, GLint first, GLsizei count);
190
typedef void (OGLFUNCCALL *glEnable_fp)(GLenum cap);
191
typedef void (OGLFUNCCALL *glEnableClientState_fp)(GLenum array);
192
typedef void (OGLFUNCCALL *glEnd_fp)(void);
193
typedef void (OGLFUNCCALL *glFinish_fp)(void);
194
typedef void (OGLFUNCCALL *glGenTextures_fp)(GLsizei n, GLuint *textures);
195
typedef void (OGLFUNCCALL *glGetFloatv_fp)(GLenum pname, GLfloat *params);
196
typedef void (OGLFUNCCALL *glGetIntegerv_fp)(GLenum pname, GLint *params);
197
typedef const GLubyte *(OGLFUNCCALL *glGetString_fp)(GLenum name);
198
typedef void (OGLFUNCCALL *glGetTexLevelParameteriv_fp)(GLenum target, GLint level, GLenum pname, GLint *params);
199
typedef void (OGLFUNCCALL *glHint_fp)(GLenum target, GLenum mode);
200
typedef void (OGLFUNCCALL *glLineWidth_fp)(GLfloat width);
201
typedef void (OGLFUNCCALL *glLoadIdentity_fp)(void);
202
typedef void (OGLFUNCCALL *glMatrixMode_fp)(GLenum mode);
203
typedef void (OGLFUNCCALL *glOrtho_fp)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
204
typedef void (OGLFUNCCALL *glPointSize_fp)(GLfloat size);
205
typedef void (OGLFUNCCALL *glPopMatrix_fp)(void);
206
typedef void (OGLFUNCCALL *glPrioritizeTextures_fp)(GLsizei n, const GLuint *textures, const GLclampf *priorities);
207
typedef void (OGLFUNCCALL *glPushMatrix_fp)(void);
208
typedef void (OGLFUNCCALL *glReadBuffer_fp)(GLenum mode);
209
typedef void (OGLFUNCCALL *glReadPixels_fp)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
210
typedef void (OGLFUNCCALL *glScalef_fp)(GLfloat x, GLfloat y, GLfloat z);
211
typedef void (OGLFUNCCALL *glShadeModel_fp)(GLenum mode);
212
typedef void (OGLFUNCCALL *glTexCoordPointer_fp)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
213
typedef void (OGLFUNCCALL *glTexEnvi_fp)(GLenum target, GLenum pname, GLint param);
214
typedef void (OGLFUNCCALL *glTexImage2D_fp)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
215
typedef void (OGLFUNCCALL *glTexParameterf_fp)(GLenum target, GLenum pname, GLfloat param);
216
typedef void (OGLFUNCCALL *glTexParameteri_fp)(GLenum target, GLenum pname, GLint param);
217
typedef void (OGLFUNCCALL *glTranslatef_fp)(GLfloat x, GLfloat y, GLfloat z);
218
typedef void (OGLFUNCCALL *glVertexPointer_fp)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
219
typedef void (OGLFUNCCALL *glViewport_fp)(GLint x, GLint y, GLsizei width, GLsizei height);
220
 
221
typedef void (OGLFUNCCALL *glMultiTexCoord2fARB_fp)(GLenum target, GLfloat s, GLfloat t);
222
typedef void (OGLFUNCCALL *glActiveTextureARB_fp)(GLenum target);
223
typedef void (OGLFUNCCALL *glMultiTexCoord2fSGIS_fp)(GLenum target, GLfloat s, GLfloat t);
224
typedef void (OGLFUNCCALL *glSelectTextureSGIS_fp)(GLenum target);
225
 
226
#ifdef _WIN32
227
typedef PROC  (OGLFUNCCALL *wglGetProcAddress_fp)(LPCSTR);
228
#endif
229
 
230
DEFVAR glAlphaFunc_fp dglAlphaFunc;
231
DEFVAR glBindTexture_fp dglBindTexture;
232
DEFVAR glBlendFunc_fp dglBlendFunc;
233
DEFVAR glClear_fp dglClear;
234
DEFVAR glClearColor_fp dglClearColor;
235
DEFVAR glColor4f_fp dglColor4f;
236
DEFVAR glColorPointer_fp dglColorPointer;
237
DEFVAR glCullFace_fp dglCullFace;
238
DEFVAR glDeleteTextures_fp dglDeleteTextures;
239
DEFVAR glDepthFunc_fp dglDepthFunc;
240
DEFVAR glDepthMask_fp dglDepthMask;
241
DEFVAR glDisable_fp dglDisable;
242
DEFVAR glDisableClientState_fp dglDisableClientState;
243
DEFVAR glDrawArrays_fp dglDrawArrays;
244
DEFVAR glEnable_fp dglEnable;
245
DEFVAR glEnableClientState_fp dglEnableClientState;
246
DEFVAR glEnd_fp dglEnd;
247
DEFVAR glFinish_fp dglFinish;
248
DEFVAR glGenTextures_fp dglGenTextures;
249
DEFVAR glGetFloatv_fp dglGetFloatv;
250
DEFVAR glGetIntegerv_fp dglGetIntegerv;
251
DEFVAR glGetString_fp dglGetString;
252
DEFVAR glGetTexLevelParameteriv_fp dglGetTexLevelParameteriv;
253
DEFVAR glHint_fp dglHint;
254
DEFVAR glLineWidth_fp dglLineWidth;
255
DEFVAR glLoadIdentity_fp dglLoadIdentity;
256
DEFVAR glMatrixMode_fp dglMatrixMode;
257
DEFVAR glOrtho_fp dglOrtho;
258
DEFVAR glPointSize_fp dglPointSize;
259
DEFVAR glPopMatrix_fp dglPopMatrix;
260
DEFVAR glPrioritizeTextures_fp dglPrioritizeTextures;
261
DEFVAR glPushMatrix_fp dglPushMatrix;
262
DEFVAR glReadBuffer_fp dglReadBuffer;
263
DEFVAR glReadPixels_fp dglReadPixels;
264
DEFVAR glScalef_fp dglScalef;
265
DEFVAR glShadeModel_fp dglShadeModel;
266
DEFVAR glTexCoordPointer_fp dglTexCoordPointer;
267
DEFVAR glTexEnvi_fp dglTexEnvi;
268
DEFVAR glTexImage2D_fp dglTexImage2D;
269
DEFVAR glTexParameterf_fp dglTexParameterf;
270
DEFVAR glTexParameteri_fp dglTexParameteri;
271
DEFVAR glTranslatef_fp dglTranslatef;
272
DEFVAR glVertexPointer_fp dglVertexPointer;
273
DEFVAR glViewport_fp dglViewport;
274
 
275
#ifdef DECLARE_VARS
276
 
277
// Dynamic module load functions
278
#ifdef _WIN32
279
static inline void *dll_LoadModule(const char *name)
280
{
281
        HINSTANCE handle;
282
        handle = LoadLibrary(name);
283
        return reinterpret_cast<void *>(handle);
284
}
285
static inline void dll_UnloadModule(void *hdl)
286
{
287
        if (hdl)
288
        {
289
                FreeLibrary(reinterpret_cast<HINSTANCE>(hdl));
290
        }
291
}
292
static void *dll_GetSymbol(void *dllhandle,const char *symname)
293
{
294
        if(!dllhandle)
295
                return NULL;
296
        return reinterpret_cast<void *>(GetProcAddress(reinterpret_cast<HINSTANCE>(dllhandle), symname));
297
}
298
#endif
299
#ifdef __unix__
300
#include <dlfcn.h>
301
static inline void *dll_LoadModule(const char *name)
302
{
303
        return (void *)dlopen(name,RTLD_NOW|RTLD_GLOBAL);
304
}
305
static inline void dll_UnloadModule(void *hdl)
306
{
307
        if(hdl)
308
        {
309
                dlclose(hdl);
310
        }
311
}
312
static void *dll_GetSymbol(void *dllhandle,const char *symname)
313
{
314
        if(!dllhandle)
315
                return NULL;
316
        return dlsym(dllhandle,symname);
317
}
318
#endif
319
#ifdef macintosh
320
#include <SDL.h>
321
static inline void *dll_LoadModule(const char *name)
322
{
323
        return SDL_GL_LoadLibrary(name) ? NULL : (void *) -1;   // return pointer is not dereferenced
324
}
325
static inline void dll_UnloadModule(void *hdl)
326
{
327
        hdl = hdl;      // SDL_GL_UnloadLibrary not exported by SDL
328
}
329
static void *dll_GetSymbol(void *dllhandle,const char *symname)
330
{
331
        if(!dllhandle)
332
                return NULL;
333
        return SDL_GL_GetProcAddress(symname);
334
}
335
#endif
336
 
337
#endif //DECLARE_VARS
338
 
339
// pass true to load the library
340
// pass false to unload it
341
bool OpenGL_LoadLibrary(bool load, const char *OglLibPath);//load=true removed because not c++
342
#ifdef DECLARE_VARS
343
static void OpenGL_SetFuncsToNull(void);
344
 
345
void *OpenGLModuleHandle=NULL;
346
bool OpenGL_LoadLibrary(bool load, const char *OglLibPath)
347
{
348
        if(load && OpenGLModuleHandle)
349
                return true;
350
 
351
        OpenGL_SetFuncsToNull();
352
 
353
        if(!load)
354
        {
355
                if(OpenGLModuleHandle)
356
                {
357
                        dll_UnloadModule(OpenGLModuleHandle);
358
                        OpenGLModuleHandle = NULL;
359
                }
360
                return true;
361
        }else
362
        {
363
                OpenGLModuleHandle = dll_LoadModule(OglLibPath);
364
                if(!OpenGLModuleHandle)
365
                        return false;
366
 
367
                dglAlphaFunc = reinterpret_cast<glAlphaFunc_fp>(dll_GetSymbol(OpenGLModuleHandle,"glAlphaFunc"));
368
                dglBindTexture = reinterpret_cast<glBindTexture_fp>(dll_GetSymbol(OpenGLModuleHandle,"glBindTexture"));
369
                dglBlendFunc = reinterpret_cast<glBlendFunc_fp>(dll_GetSymbol(OpenGLModuleHandle,"glBlendFunc"));
370
                dglClear = reinterpret_cast<glClear_fp>(dll_GetSymbol(OpenGLModuleHandle,"glClear"));
371
                dglClearColor = reinterpret_cast<glClearColor_fp>(dll_GetSymbol(OpenGLModuleHandle,"glClearColor"));
372
                dglColor4f = reinterpret_cast<glColor4f_fp>(dll_GetSymbol(OpenGLModuleHandle,"glColor4f"));
373
                dglColorPointer = reinterpret_cast<glColorPointer_fp>(dll_GetSymbol(OpenGLModuleHandle,"glColorPointer"));
374
                dglCullFace = reinterpret_cast<glCullFace_fp>(dll_GetSymbol(OpenGLModuleHandle,"glCullFace"));
375
                dglDeleteTextures = reinterpret_cast<glDeleteTextures_fp>(dll_GetSymbol(OpenGLModuleHandle,"glDeleteTextures"));
376
                dglDepthFunc = reinterpret_cast<glDepthFunc_fp>(dll_GetSymbol(OpenGLModuleHandle,"glDepthFunc"));
377
                dglDepthMask = reinterpret_cast<glDepthMask_fp>(dll_GetSymbol(OpenGLModuleHandle,"glDepthMask"));
378
                dglDisable = reinterpret_cast<glDisable_fp>(dll_GetSymbol(OpenGLModuleHandle,"glDisable"));
379
                dglDisableClientState = reinterpret_cast<glDisableClientState_fp>(dll_GetSymbol(OpenGLModuleHandle,"glDisableClientState"));
380
                dglDrawArrays = reinterpret_cast<glDrawArrays_fp>(dll_GetSymbol(OpenGLModuleHandle,"glDrawArrays"));
381
                dglEnable = reinterpret_cast<glEnable_fp>(dll_GetSymbol(OpenGLModuleHandle,"glEnable"));
382
                dglEnableClientState = reinterpret_cast<glEnableClientState_fp>(dll_GetSymbol(OpenGLModuleHandle,"glEnableClientState"));
383
                dglEnd = reinterpret_cast<glEnd_fp>(dll_GetSymbol(OpenGLModuleHandle,"glEnd"));
384
                dglFinish = reinterpret_cast<glFinish_fp>(dll_GetSymbol(OpenGLModuleHandle,"glFinish"));
385
                dglGenTextures = reinterpret_cast<glGenTextures_fp>(dll_GetSymbol(OpenGLModuleHandle,"glGenTextures"));
386
                dglGetFloatv = reinterpret_cast<glGetFloatv_fp>(dll_GetSymbol(OpenGLModuleHandle,"glGetFloatv"));
387
                dglGetIntegerv = reinterpret_cast<glGetIntegerv_fp>(dll_GetSymbol(OpenGLModuleHandle,"glGetIntegerv"));
388
                dglGetString = reinterpret_cast<glGetString_fp>(dll_GetSymbol(OpenGLModuleHandle,"glGetString"));
389
                dglGetTexLevelParameteriv = reinterpret_cast<glGetTexLevelParameteriv_fp>(dll_GetSymbol(OpenGLModuleHandle,"glGetTexLevelParameteriv"));
390
                dglHint = reinterpret_cast<glHint_fp>(dll_GetSymbol(OpenGLModuleHandle,"glHint"));
391
                dglLineWidth = reinterpret_cast<glLineWidth_fp>(dll_GetSymbol(OpenGLModuleHandle,"glLineWidth"));
392
                dglLoadIdentity = reinterpret_cast<glLoadIdentity_fp>(dll_GetSymbol(OpenGLModuleHandle,"glLoadIdentity"));
393
                dglMatrixMode = reinterpret_cast<glMatrixMode_fp>(dll_GetSymbol(OpenGLModuleHandle,"glMatrixMode"));
394
                dglOrtho = reinterpret_cast<glOrtho_fp>(dll_GetSymbol(OpenGLModuleHandle,"glOrtho"));
395
                dglPointSize = reinterpret_cast<glPointSize_fp>(dll_GetSymbol(OpenGLModuleHandle,"glPointSize"));
396
                dglPopMatrix = reinterpret_cast<glPopMatrix_fp>(dll_GetSymbol(OpenGLModuleHandle,"glPopMatrix"));
397
                dglPrioritizeTextures = reinterpret_cast<glPrioritizeTextures_fp>(dll_GetSymbol(OpenGLModuleHandle,"glPrioritizeTextures"));
398
                dglPushMatrix = reinterpret_cast<glPushMatrix_fp>(dll_GetSymbol(OpenGLModuleHandle,"glPushMatrix"));
399
                dglReadBuffer = reinterpret_cast<glReadBuffer_fp>(dll_GetSymbol(OpenGLModuleHandle,"glReadBuffer"));
400
                dglReadPixels = reinterpret_cast<glReadPixels_fp>(dll_GetSymbol(OpenGLModuleHandle,"glReadPixels"));
401
                dglScalef = reinterpret_cast<glScalef_fp>(dll_GetSymbol(OpenGLModuleHandle,"glScalef"));
402
                dglShadeModel = reinterpret_cast<glShadeModel_fp>(dll_GetSymbol(OpenGLModuleHandle,"glShadeModel"));
403
                dglTexCoordPointer = reinterpret_cast<glTexCoordPointer_fp>(dll_GetSymbol(OpenGLModuleHandle,"glTexCoordPointer"));
404
                dglTexEnvi = reinterpret_cast<glTexEnvi_fp>(dll_GetSymbol(OpenGLModuleHandle,"glTexEnvi"));
405
                dglTexImage2D = reinterpret_cast<glTexImage2D_fp>(dll_GetSymbol(OpenGLModuleHandle,"glTexImage2D"));
406
                dglTexParameterf = reinterpret_cast<glTexParameterf_fp>(dll_GetSymbol(OpenGLModuleHandle,"glTexParameterf"));
407
                dglTexParameteri = reinterpret_cast<glTexParameteri_fp>(dll_GetSymbol(OpenGLModuleHandle,"glTexParameteri"));
408
                dglTranslatef = reinterpret_cast<glTranslatef_fp>(dll_GetSymbol(OpenGLModuleHandle,"glTranslatef"));
409
                dglVertexPointer = reinterpret_cast<glVertexPointer_fp>(dll_GetSymbol(OpenGLModuleHandle,"glVertexPointer"));
410
                dglViewport = reinterpret_cast<glViewport_fp>(dll_GetSymbol(OpenGLModuleHandle,"glViewport"));
411
        }
412
 
413
        return true;
414
}
415
 
416
static void OpenGL_SetFuncsToNull(void)
417
{
418
        dglAlphaFunc = NULL;
419
        dglBindTexture = NULL;
420
        dglBlendFunc = NULL;
421
        dglClear = NULL;
422
        dglClearColor = NULL;
423
        dglColor4f = NULL;
424
        dglColorPointer = NULL;
425
        dglCullFace = NULL;
426
        dglDeleteTextures = NULL;
427
        dglDepthFunc = NULL;
428
        dglDepthMask = NULL;
429
        dglDisable = NULL;
430
        dglDisableClientState = NULL;
431
        dglDrawArrays = NULL;
432
        dglEnable = NULL;
433
        dglEnableClientState = NULL;
434
        dglEnd = NULL;
435
        dglFinish = NULL;
436
        dglGenTextures = NULL;
437
        dglGetFloatv = NULL;
438
        dglGetIntegerv = NULL;
439
        dglGetString = NULL;
440
        dglGetTexLevelParameteriv = NULL;
441
        dglHint = NULL;
442
        dglLineWidth = NULL;
443
        dglLoadIdentity = NULL;
444
        dglMatrixMode = NULL;
445
        dglOrtho = NULL;
446
        dglPointSize = NULL;
447
        dglPopMatrix = NULL;
448
        dglPrioritizeTextures = NULL;
449
        dglPushMatrix = NULL;
450
        dglReadBuffer = NULL;
451
        dglReadPixels = NULL;
452
        dglScalef = NULL;
453
        dglShadeModel = NULL;
454
        dglTexCoordPointer = NULL;
455
        dglTexEnvi = NULL;
456
        dglTexImage2D = NULL;
457
        dglTexParameterf = NULL;
458
        dglTexParameteri = NULL;
459
        dglTranslatef = NULL;
460
        dglVertexPointer = NULL;
461
        dglViewport = NULL;
462
}
463
#endif
464
 
465
 
466
#endif //!__LOADGL_H__