2014-06-01 17:55:23 +00:00
|
|
|
/*
|
|
|
|
* This file is part of the DXX-Rebirth project <http://www.dxx-rebirth.com/>.
|
|
|
|
* It is copyright by its individual contributors, as recorded in the
|
|
|
|
* project's Git history. See COPYING.txt at the top level for license
|
|
|
|
* terms and a link to the Git history.
|
|
|
|
*/
|
2006-03-20 17:12:09 +00:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* dynamic opengl loading - courtesy of Jeff Slutter
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __LOADGL_H__
|
|
|
|
#define __LOADGL_H__
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
#include <windows.h>
|
|
|
|
#define OGLFUNCCALL __stdcall
|
|
|
|
#else
|
|
|
|
#define OGLFUNCCALL
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <GL/gl.h>
|
|
|
|
#include "pstypes.h"
|
|
|
|
|
|
|
|
//gl extensions.
|
|
|
|
#ifndef GL_ARB_multitexture
|
|
|
|
#define GL_ARB_multitexture 1
|
2013-02-21 00:20:26 +00:00
|
|
|
#define GL_TEXTURE0_ARB 0x84C0
|
2006-03-20 17:12:09 +00:00
|
|
|
#define GL_TEXTURE1_ARB 0x84C1
|
|
|
|
#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef GL_SGIS_multitexture
|
|
|
|
#define GL_SGIS_multitexture 1
|
|
|
|
#define GL_TEXTURE0_SGIS 0x835F
|
|
|
|
#define GL_TEXTURE1_SGIS 0x8360
|
|
|
|
#define GL_MAX_TEXTURES_SGIS 0x835D
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef GL_EXT_paletted_texture
|
|
|
|
#define GL_EXT_paletted_texture 1
|
|
|
|
#define GL_COLOR_INDEX8_EXT 0x80E5
|
|
|
|
#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef GL_TEXTURE_INDEX_SIZE_EXT
|
|
|
|
#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED
|
|
|
|
#endif
|
|
|
|
|
2008-03-25 12:28:02 +00:00
|
|
|
#ifndef GL_SCISSOR_TEST
|
|
|
|
#define GL_SCISSOR_TEST 0x0C11
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef GL_CLAMP_TO_EDGE
|
|
|
|
#define GL_CLAMP_TO_EDGE 0x812F
|
|
|
|
#endif
|
|
|
|
|
2006-03-20 17:12:09 +00:00
|
|
|
#ifndef GL_NV_register_combiners
|
|
|
|
#define GL_NV_register_combiners 1
|
|
|
|
#define GL_REGISTER_COMBINERS_NV 0x8522
|
|
|
|
#define GL_VARIABLE_A_NV 0x8523
|
|
|
|
#define GL_VARIABLE_B_NV 0x8524
|
|
|
|
#define GL_VARIABLE_C_NV 0x8525
|
|
|
|
#define GL_VARIABLE_D_NV 0x8526
|
|
|
|
#define GL_VARIABLE_E_NV 0x8527
|
|
|
|
#define GL_VARIABLE_F_NV 0x8528
|
|
|
|
#define GL_VARIABLE_G_NV 0x8529
|
|
|
|
#define GL_CONSTANT_COLOR0_NV 0x852A
|
|
|
|
#define GL_CONSTANT_COLOR1_NV 0x852B
|
|
|
|
#define GL_PRIMARY_COLOR_NV 0x852C
|
|
|
|
#define GL_SECONDARY_COLOR_NV 0x852D
|
|
|
|
#define GL_SPARE0_NV 0x852E
|
|
|
|
#define GL_SPARE1_NV 0x852F
|
|
|
|
#define GL_DISCARD_NV 0x8530
|
|
|
|
#define GL_E_TIMES_F_NV 0x8531
|
|
|
|
#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532
|
|
|
|
#define GL_UNSIGNED_IDENTITY_NV 0x8536
|
|
|
|
#define GL_UNSIGNED_INVERT_NV 0x8537
|
|
|
|
#define GL_EXPAND_NORMAL_NV 0x8538
|
|
|
|
#define GL_EXPAND_NEGATE_NV 0x8539
|
|
|
|
#define GL_HALF_BIAS_NORMAL_NV 0x853A
|
|
|
|
#define GL_HALF_BIAS_NEGATE_NV 0x853B
|
|
|
|
#define GL_SIGNED_IDENTITY_NV 0x853C
|
|
|
|
#define GL_SIGNED_NEGATE_NV 0x853D
|
|
|
|
#define GL_SCALE_BY_TWO_NV 0x853E
|
|
|
|
#define GL_SCALE_BY_FOUR_NV 0x853F
|
|
|
|
#define GL_SCALE_BY_ONE_HALF_NV 0x8540
|
|
|
|
#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541
|
|
|
|
#define GL_COMBINER_INPUT_NV 0x8542
|
|
|
|
#define GL_COMBINER_MAPPING_NV 0x8543
|
|
|
|
#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544
|
|
|
|
#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545
|
|
|
|
#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546
|
|
|
|
#define GL_COMBINER_MUX_SUM_NV 0x8547
|
|
|
|
#define GL_COMBINER_SCALE_NV 0x8548
|
|
|
|
#define GL_COMBINER_BIAS_NV 0x8549
|
|
|
|
#define GL_COMBINER_AB_OUTPUT_NV 0x854A
|
|
|
|
#define GL_COMBINER_CD_OUTPUT_NV 0x854B
|
|
|
|
#define GL_COMBINER_SUM_OUTPUT_NV 0x854C
|
|
|
|
#define GL_MAX_GENERAL_COMBINERS_NV 0x854D
|
|
|
|
#define GL_NUM_GENERAL_COMBINERS_NV 0x854E
|
|
|
|
#define GL_COLOR_SUM_CLAMP_NV 0x854F
|
|
|
|
#define GL_COMBINER0_NV 0x8550
|
|
|
|
#define GL_COMBINER1_NV 0x8551
|
|
|
|
#define GL_COMBINER2_NV 0x8552
|
|
|
|
#define GL_COMBINER3_NV 0x8553
|
|
|
|
#define GL_COMBINER4_NV 0x8554
|
|
|
|
#define GL_COMBINER5_NV 0x8555
|
|
|
|
#define GL_COMBINER6_NV 0x8556
|
|
|
|
#define GL_COMBINER7_NV 0x8557
|
|
|
|
#endif
|
|
|
|
|
2006-10-20 16:38:04 +00:00
|
|
|
#define GL_SCISSOR_TEST 0x0C11
|
|
|
|
|
2014-06-28 03:57:57 +00:00
|
|
|
#ifdef __cplusplus
|
2006-03-20 17:12:09 +00:00
|
|
|
#define OEXTERN extern "C"
|
|
|
|
#else
|
|
|
|
#define OEXTERN extern
|
|
|
|
#define true 1
|
|
|
|
#define false 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef DECLARE_VARS
|
|
|
|
#define DEFVAR
|
|
|
|
#else
|
|
|
|
#define DEFVAR OEXTERN
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define glAlphaFunc dglAlphaFunc
|
|
|
|
#define glBindTexture dglBindTexture
|
|
|
|
#define glBlendFunc dglBlendFunc
|
|
|
|
#define glClear dglClear
|
|
|
|
#define glClearColor dglClearColor
|
|
|
|
#define glColor4f dglColor4f
|
|
|
|
#define glColorPointer dglColorPointer
|
|
|
|
#define glCullFace dglCullFace
|
|
|
|
#define glDeleteTextures dglDeleteTextures
|
|
|
|
#define glDepthFunc dglDepthFunc
|
|
|
|
#define glDepthMask dglDepthMask
|
|
|
|
#define glDisable dglDisable
|
|
|
|
#define glDisableClientState dglDisableClientState
|
|
|
|
#define glDrawArrays dglDrawArrays
|
|
|
|
#define glEnable dglEnable
|
|
|
|
#define glEnableClientState dglEnableClientState
|
|
|
|
#define glEnd dglEnd
|
|
|
|
#define glFinish dglFinish
|
|
|
|
#define glGenTextures dglGenTextures
|
|
|
|
#define glGetFloatv dglGetFloatv
|
|
|
|
#define glGetIntegerv dglGetIntegerv
|
|
|
|
#define glGetString dglGetString
|
|
|
|
#define glGetTexLevelParameteriv dglGetTexLevelParameteriv
|
|
|
|
#define glHint dglHint
|
|
|
|
#define glLineWidth dglLineWidth
|
|
|
|
#define glLoadIdentity dglLoadIdentity
|
|
|
|
#define glMatrixMode dglMatrixMode
|
|
|
|
#define glOrtho dglOrtho
|
|
|
|
#define glPointSize dglPointSize
|
|
|
|
#define glPopMatrix dglPopMatrix
|
|
|
|
#define glPrioritizeTextures dglPrioritizeTextures
|
|
|
|
#define glPushMatrix dglPushMatrix
|
|
|
|
#define glReadBuffer dglReadBuffer
|
|
|
|
#define glReadPixels dglReadPixels
|
|
|
|
#define glScalef dglScalef
|
|
|
|
#define glShadeModel dglShadeModel
|
|
|
|
#define glTexCoordPointer dglTexCoordPointer
|
|
|
|
#define glTexEnvi dglTexEnvi
|
|
|
|
#define glTexImage2D dglTexImage2D
|
|
|
|
#define glTexParameterf dglTexParameterf
|
|
|
|
#define glTexParameteri dglTexParameteri
|
|
|
|
#define glTranslatef dglTranslatef
|
|
|
|
#define glVertexPointer dglVertexPointer
|
|
|
|
#define glViewport dglViewport
|
|
|
|
|
|
|
|
typedef void (OGLFUNCCALL *glAlphaFunc_fp)(GLenum func, GLclampf ref);
|
|
|
|
typedef void (OGLFUNCCALL *glBindTexture_fp)(GLenum target, GLuint texture);
|
|
|
|
typedef void (OGLFUNCCALL *glBlendFunc_fp)(GLenum sfactor, GLenum dfactor);
|
|
|
|
typedef void (OGLFUNCCALL *glClear_fp)(GLbitfield mask);
|
|
|
|
typedef void (OGLFUNCCALL *glClearColor_fp)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
|
|
|
|
typedef void (OGLFUNCCALL *glColor4f_fp)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
|
|
|
typedef void (OGLFUNCCALL *glColorPointer_fp)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
|
|
|
typedef void (OGLFUNCCALL *glCullFace_fp)(GLenum mode);
|
|
|
|
typedef void (OGLFUNCCALL *glDeleteTextures_fp)(GLsizei n, const GLuint *textures);
|
|
|
|
typedef void (OGLFUNCCALL *glDepthFunc_fp)(GLenum func);
|
|
|
|
typedef void (OGLFUNCCALL *glDepthMask_fp)(GLboolean flag);
|
|
|
|
typedef void (OGLFUNCCALL *glDisable_fp)(GLenum cap);
|
|
|
|
typedef void (OGLFUNCCALL *glDisableClientState_fp)(GLenum array);
|
|
|
|
typedef void (OGLFUNCCALL *glDrawArrays_fp)(GLenum mode, GLint first, GLsizei count);
|
|
|
|
typedef void (OGLFUNCCALL *glEnable_fp)(GLenum cap);
|
|
|
|
typedef void (OGLFUNCCALL *glEnableClientState_fp)(GLenum array);
|
|
|
|
typedef void (OGLFUNCCALL *glEnd_fp)(void);
|
|
|
|
typedef void (OGLFUNCCALL *glFinish_fp)(void);
|
|
|
|
typedef void (OGLFUNCCALL *glGenTextures_fp)(GLsizei n, GLuint *textures);
|
|
|
|
typedef void (OGLFUNCCALL *glGetFloatv_fp)(GLenum pname, GLfloat *params);
|
|
|
|
typedef void (OGLFUNCCALL *glGetIntegerv_fp)(GLenum pname, GLint *params);
|
|
|
|
typedef const GLubyte *(OGLFUNCCALL *glGetString_fp)(GLenum name);
|
|
|
|
typedef void (OGLFUNCCALL *glGetTexLevelParameteriv_fp)(GLenum target, GLint level, GLenum pname, GLint *params);
|
|
|
|
typedef void (OGLFUNCCALL *glHint_fp)(GLenum target, GLenum mode);
|
|
|
|
typedef void (OGLFUNCCALL *glLineWidth_fp)(GLfloat width);
|
|
|
|
typedef void (OGLFUNCCALL *glLoadIdentity_fp)(void);
|
|
|
|
typedef void (OGLFUNCCALL *glMatrixMode_fp)(GLenum mode);
|
|
|
|
typedef void (OGLFUNCCALL *glOrtho_fp)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
|
|
|
|
typedef void (OGLFUNCCALL *glPointSize_fp)(GLfloat size);
|
|
|
|
typedef void (OGLFUNCCALL *glPopMatrix_fp)(void);
|
|
|
|
typedef void (OGLFUNCCALL *glPrioritizeTextures_fp)(GLsizei n, const GLuint *textures, const GLclampf *priorities);
|
|
|
|
typedef void (OGLFUNCCALL *glPushMatrix_fp)(void);
|
|
|
|
typedef void (OGLFUNCCALL *glReadBuffer_fp)(GLenum mode);
|
|
|
|
typedef void (OGLFUNCCALL *glReadPixels_fp)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
|
|
|
|
typedef void (OGLFUNCCALL *glScalef_fp)(GLfloat x, GLfloat y, GLfloat z);
|
|
|
|
typedef void (OGLFUNCCALL *glShadeModel_fp)(GLenum mode);
|
|
|
|
typedef void (OGLFUNCCALL *glTexCoordPointer_fp)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
|
|
|
typedef void (OGLFUNCCALL *glTexEnvi_fp)(GLenum target, GLenum pname, GLint param);
|
|
|
|
typedef void (OGLFUNCCALL *glTexImage2D_fp)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
|
|
|
|
typedef void (OGLFUNCCALL *glTexParameterf_fp)(GLenum target, GLenum pname, GLfloat param);
|
|
|
|
typedef void (OGLFUNCCALL *glTexParameteri_fp)(GLenum target, GLenum pname, GLint param);
|
|
|
|
typedef void (OGLFUNCCALL *glTranslatef_fp)(GLfloat x, GLfloat y, GLfloat z);
|
|
|
|
typedef void (OGLFUNCCALL *glVertexPointer_fp)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
|
|
|
typedef void (OGLFUNCCALL *glViewport_fp)(GLint x, GLint y, GLsizei width, GLsizei height);
|
|
|
|
|
|
|
|
typedef void (OGLFUNCCALL *glMultiTexCoord2fARB_fp)(GLenum target, GLfloat s, GLfloat t);
|
|
|
|
typedef void (OGLFUNCCALL *glActiveTextureARB_fp)(GLenum target);
|
|
|
|
typedef void (OGLFUNCCALL *glMultiTexCoord2fSGIS_fp)(GLenum target, GLfloat s, GLfloat t);
|
|
|
|
typedef void (OGLFUNCCALL *glSelectTextureSGIS_fp)(GLenum target);
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
typedef PROC (OGLFUNCCALL *wglGetProcAddress_fp)(LPCSTR);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
DEFVAR glAlphaFunc_fp dglAlphaFunc;
|
|
|
|
DEFVAR glBindTexture_fp dglBindTexture;
|
|
|
|
DEFVAR glBlendFunc_fp dglBlendFunc;
|
|
|
|
DEFVAR glClear_fp dglClear;
|
|
|
|
DEFVAR glClearColor_fp dglClearColor;
|
|
|
|
DEFVAR glColor4f_fp dglColor4f;
|
|
|
|
DEFVAR glColorPointer_fp dglColorPointer;
|
|
|
|
DEFVAR glCullFace_fp dglCullFace;
|
|
|
|
DEFVAR glDeleteTextures_fp dglDeleteTextures;
|
|
|
|
DEFVAR glDepthFunc_fp dglDepthFunc;
|
|
|
|
DEFVAR glDepthMask_fp dglDepthMask;
|
|
|
|
DEFVAR glDisable_fp dglDisable;
|
|
|
|
DEFVAR glDisableClientState_fp dglDisableClientState;
|
|
|
|
DEFVAR glDrawArrays_fp dglDrawArrays;
|
|
|
|
DEFVAR glEnable_fp dglEnable;
|
|
|
|
DEFVAR glEnableClientState_fp dglEnableClientState;
|
|
|
|
DEFVAR glEnd_fp dglEnd;
|
|
|
|
DEFVAR glFinish_fp dglFinish;
|
|
|
|
DEFVAR glGenTextures_fp dglGenTextures;
|
|
|
|
DEFVAR glGetFloatv_fp dglGetFloatv;
|
|
|
|
DEFVAR glGetIntegerv_fp dglGetIntegerv;
|
|
|
|
DEFVAR glGetString_fp dglGetString;
|
|
|
|
DEFVAR glGetTexLevelParameteriv_fp dglGetTexLevelParameteriv;
|
|
|
|
DEFVAR glHint_fp dglHint;
|
|
|
|
DEFVAR glLineWidth_fp dglLineWidth;
|
|
|
|
DEFVAR glLoadIdentity_fp dglLoadIdentity;
|
|
|
|
DEFVAR glMatrixMode_fp dglMatrixMode;
|
|
|
|
DEFVAR glOrtho_fp dglOrtho;
|
|
|
|
DEFVAR glPointSize_fp dglPointSize;
|
|
|
|
DEFVAR glPopMatrix_fp dglPopMatrix;
|
|
|
|
DEFVAR glPrioritizeTextures_fp dglPrioritizeTextures;
|
|
|
|
DEFVAR glPushMatrix_fp dglPushMatrix;
|
|
|
|
DEFVAR glReadBuffer_fp dglReadBuffer;
|
|
|
|
DEFVAR glReadPixels_fp dglReadPixels;
|
|
|
|
DEFVAR glScalef_fp dglScalef;
|
|
|
|
DEFVAR glShadeModel_fp dglShadeModel;
|
|
|
|
DEFVAR glTexCoordPointer_fp dglTexCoordPointer;
|
|
|
|
DEFVAR glTexEnvi_fp dglTexEnvi;
|
|
|
|
DEFVAR glTexImage2D_fp dglTexImage2D;
|
|
|
|
DEFVAR glTexParameterf_fp dglTexParameterf;
|
|
|
|
DEFVAR glTexParameteri_fp dglTexParameteri;
|
|
|
|
DEFVAR glTranslatef_fp dglTranslatef;
|
|
|
|
DEFVAR glVertexPointer_fp dglVertexPointer;
|
|
|
|
DEFVAR glViewport_fp dglViewport;
|
|
|
|
|
|
|
|
#ifdef DECLARE_VARS
|
|
|
|
|
|
|
|
// Dynamic module load functions
|
|
|
|
#ifdef _WIN32
|
2013-10-27 23:08:26 +00:00
|
|
|
static inline void *dll_LoadModule(const char *name)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
HINSTANCE handle;
|
|
|
|
handle = LoadLibrary(name);
|
|
|
|
return (void *)handle;
|
|
|
|
}
|
2013-10-27 23:08:26 +00:00
|
|
|
static inline void dll_UnloadModule(void *hdl)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
HINSTANCE handle;
|
|
|
|
handle = (HINSTANCE)hdl;
|
|
|
|
|
|
|
|
if(hdl)
|
|
|
|
{
|
|
|
|
FreeLibrary(handle);
|
|
|
|
}
|
|
|
|
}
|
2013-10-27 23:08:26 +00:00
|
|
|
static void *dll_GetSymbol(void *dllhandle,const char *symname)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
if(!dllhandle)
|
|
|
|
return NULL;
|
|
|
|
return (void *)GetProcAddress((HINSTANCE)dllhandle,symname);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#ifdef __unix__
|
|
|
|
#include <dlfcn.h>
|
2013-10-27 23:08:26 +00:00
|
|
|
static inline void *dll_LoadModule(const char *name)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
return (void *)dlopen(name,RTLD_NOW|RTLD_GLOBAL);
|
|
|
|
}
|
2013-10-27 23:08:26 +00:00
|
|
|
static inline void dll_UnloadModule(void *hdl)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
if(hdl)
|
|
|
|
{
|
|
|
|
dlclose(hdl);
|
|
|
|
}
|
|
|
|
}
|
2013-10-27 23:08:26 +00:00
|
|
|
static void *dll_GetSymbol(void *dllhandle,const char *symname)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
if(!dllhandle)
|
|
|
|
return NULL;
|
|
|
|
return dlsym(dllhandle,symname);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#ifdef macintosh
|
|
|
|
#include <SDL.h>
|
2013-10-27 23:08:26 +00:00
|
|
|
static inline void *dll_LoadModule(const char *name)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
return SDL_GL_LoadLibrary(name) ? NULL : (void *) -1; // return pointer is not dereferenced
|
|
|
|
}
|
2013-10-27 23:08:26 +00:00
|
|
|
static inline void dll_UnloadModule(void *hdl)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
hdl = hdl; // SDL_GL_UnloadLibrary not exported by SDL
|
|
|
|
}
|
2013-10-27 23:08:26 +00:00
|
|
|
static void *dll_GetSymbol(void *dllhandle,const char *symname)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
if(!dllhandle)
|
|
|
|
return NULL;
|
|
|
|
return SDL_GL_GetProcAddress(symname);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif //DECLARE_VARS
|
|
|
|
|
|
|
|
// pass true to load the library
|
|
|
|
// pass false to unload it
|
2013-06-22 21:36:28 +00:00
|
|
|
bool OpenGL_LoadLibrary(bool load, const char *OglLibPath);//load=true removed because not c++
|
2013-10-27 23:08:26 +00:00
|
|
|
#ifdef DECLARE_VARS
|
|
|
|
static void OpenGL_SetFuncsToNull(void);
|
|
|
|
|
2006-03-20 17:12:09 +00:00
|
|
|
void *OpenGLModuleHandle=NULL;
|
2013-06-22 21:36:28 +00:00
|
|
|
bool OpenGL_LoadLibrary(bool load, const char *OglLibPath)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
if(load && OpenGLModuleHandle)
|
|
|
|
return true;
|
|
|
|
|
|
|
|
OpenGL_SetFuncsToNull();
|
|
|
|
|
|
|
|
if(!load)
|
|
|
|
{
|
|
|
|
if(OpenGLModuleHandle)
|
|
|
|
{
|
|
|
|
dll_UnloadModule(OpenGLModuleHandle);
|
|
|
|
OpenGLModuleHandle = NULL;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}else
|
|
|
|
{
|
|
|
|
OpenGLModuleHandle = dll_LoadModule(OglLibPath);
|
|
|
|
if(!OpenGLModuleHandle)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
dglAlphaFunc = (glAlphaFunc_fp)dll_GetSymbol(OpenGLModuleHandle,"glAlphaFunc");
|
|
|
|
dglBindTexture = (glBindTexture_fp)dll_GetSymbol(OpenGLModuleHandle,"glBindTexture");
|
|
|
|
dglBlendFunc = (glBlendFunc_fp)dll_GetSymbol(OpenGLModuleHandle,"glBlendFunc");
|
|
|
|
dglClear = (glClear_fp)dll_GetSymbol(OpenGLModuleHandle,"glClear");
|
|
|
|
dglClearColor = (glClearColor_fp)dll_GetSymbol(OpenGLModuleHandle,"glClearColor");
|
|
|
|
dglColor4f = (glColor4f_fp)dll_GetSymbol(OpenGLModuleHandle,"glColor4f");
|
|
|
|
dglColorPointer = (glColorPointer_fp)dll_GetSymbol(OpenGLModuleHandle,"glColorPointer");
|
|
|
|
dglCullFace = (glCullFace_fp)dll_GetSymbol(OpenGLModuleHandle,"glCullFace");
|
|
|
|
dglDeleteTextures = (glDeleteTextures_fp)dll_GetSymbol(OpenGLModuleHandle,"glDeleteTextures");
|
|
|
|
dglDepthFunc = (glDepthFunc_fp)dll_GetSymbol(OpenGLModuleHandle,"glDepthFunc");
|
|
|
|
dglDepthMask = (glDepthMask_fp)dll_GetSymbol(OpenGLModuleHandle,"glDepthMask");
|
|
|
|
dglDisable = (glDisable_fp)dll_GetSymbol(OpenGLModuleHandle,"glDisable");
|
|
|
|
dglDisableClientState = (glDisableClientState_fp)dll_GetSymbol(OpenGLModuleHandle,"glDisableClientState");
|
|
|
|
dglDrawArrays = (glDrawArrays_fp)dll_GetSymbol(OpenGLModuleHandle,"glDrawArrays");
|
|
|
|
dglEnable = (glEnable_fp)dll_GetSymbol(OpenGLModuleHandle,"glEnable");
|
|
|
|
dglEnableClientState = (glEnableClientState_fp)dll_GetSymbol(OpenGLModuleHandle,"glEnableClientState");
|
|
|
|
dglEnd = (glEnd_fp)dll_GetSymbol(OpenGLModuleHandle,"glEnd");
|
|
|
|
dglFinish = (glFinish_fp)dll_GetSymbol(OpenGLModuleHandle,"glFinish");
|
|
|
|
dglGenTextures = (glGenTextures_fp)dll_GetSymbol(OpenGLModuleHandle,"glGenTextures");
|
|
|
|
dglGetFloatv = (glGetFloatv_fp)dll_GetSymbol(OpenGLModuleHandle,"glGetFloatv");
|
|
|
|
dglGetIntegerv = (glGetIntegerv_fp)dll_GetSymbol(OpenGLModuleHandle,"glGetIntegerv");
|
|
|
|
dglGetString = (glGetString_fp)dll_GetSymbol(OpenGLModuleHandle,"glGetString");
|
|
|
|
dglGetTexLevelParameteriv = (glGetTexLevelParameteriv_fp)dll_GetSymbol(OpenGLModuleHandle,"glGetTexLevelParameteriv");
|
|
|
|
dglHint = (glHint_fp)dll_GetSymbol(OpenGLModuleHandle,"glHint");
|
|
|
|
dglLineWidth = (glLineWidth_fp)dll_GetSymbol(OpenGLModuleHandle,"glLineWidth");
|
|
|
|
dglLoadIdentity = (glLoadIdentity_fp)dll_GetSymbol(OpenGLModuleHandle,"glLoadIdentity");
|
|
|
|
dglMatrixMode = (glMatrixMode_fp)dll_GetSymbol(OpenGLModuleHandle,"glMatrixMode");
|
|
|
|
dglOrtho = (glOrtho_fp)dll_GetSymbol(OpenGLModuleHandle,"glOrtho");
|
|
|
|
dglPointSize = (glPointSize_fp)dll_GetSymbol(OpenGLModuleHandle,"glPointSize");
|
|
|
|
dglPopMatrix = (glPopMatrix_fp)dll_GetSymbol(OpenGLModuleHandle,"glPopMatrix");
|
|
|
|
dglPrioritizeTextures = (glPrioritizeTextures_fp)dll_GetSymbol(OpenGLModuleHandle,"glPrioritizeTextures");
|
|
|
|
dglPushMatrix = (glPushMatrix_fp)dll_GetSymbol(OpenGLModuleHandle,"glPushMatrix");
|
|
|
|
dglReadBuffer = (glReadBuffer_fp)dll_GetSymbol(OpenGLModuleHandle,"glReadBuffer");
|
|
|
|
dglReadPixels = (glReadPixels_fp)dll_GetSymbol(OpenGLModuleHandle,"glReadPixels");
|
|
|
|
dglScalef = (glScalef_fp)dll_GetSymbol(OpenGLModuleHandle,"glScalef");
|
|
|
|
dglShadeModel = (glShadeModel_fp)dll_GetSymbol(OpenGLModuleHandle,"glShadeModel");
|
|
|
|
dglTexCoordPointer = (glTexCoordPointer_fp)dll_GetSymbol(OpenGLModuleHandle,"glTexCoordPointer");
|
|
|
|
dglTexEnvi = (glTexEnvi_fp)dll_GetSymbol(OpenGLModuleHandle,"glTexEnvi");
|
|
|
|
dglTexImage2D = (glTexImage2D_fp)dll_GetSymbol(OpenGLModuleHandle,"glTexImage2D");
|
|
|
|
dglTexParameterf = (glTexParameterf_fp)dll_GetSymbol(OpenGLModuleHandle,"glTexParameterf");
|
|
|
|
dglTexParameteri = (glTexParameteri_fp)dll_GetSymbol(OpenGLModuleHandle,"glTexParameteri");
|
|
|
|
dglTranslatef = (glTranslatef_fp)dll_GetSymbol(OpenGLModuleHandle,"glTranslatef");
|
|
|
|
dglVertexPointer = (glVertexPointer_fp)dll_GetSymbol(OpenGLModuleHandle,"glVertexPointer");
|
|
|
|
dglViewport = (glViewport_fp)dll_GetSymbol(OpenGLModuleHandle,"glViewport");
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2013-10-27 23:08:26 +00:00
|
|
|
static void OpenGL_SetFuncsToNull(void)
|
2006-03-20 17:12:09 +00:00
|
|
|
{
|
|
|
|
dglAlphaFunc = NULL;
|
|
|
|
dglBindTexture = NULL;
|
|
|
|
dglBlendFunc = NULL;
|
|
|
|
dglClear = NULL;
|
|
|
|
dglClearColor = NULL;
|
|
|
|
dglColor4f = NULL;
|
|
|
|
dglColorPointer = NULL;
|
|
|
|
dglCullFace = NULL;
|
|
|
|
dglDeleteTextures = NULL;
|
|
|
|
dglDepthFunc = NULL;
|
|
|
|
dglDepthMask = NULL;
|
|
|
|
dglDisable = NULL;
|
|
|
|
dglDisableClientState = NULL;
|
|
|
|
dglDrawArrays = NULL;
|
|
|
|
dglEnable = NULL;
|
|
|
|
dglEnableClientState = NULL;
|
|
|
|
dglEnd = NULL;
|
|
|
|
dglFinish = NULL;
|
|
|
|
dglGenTextures = NULL;
|
|
|
|
dglGetFloatv = NULL;
|
|
|
|
dglGetIntegerv = NULL;
|
|
|
|
dglGetString = NULL;
|
|
|
|
dglGetTexLevelParameteriv = NULL;
|
|
|
|
dglHint = NULL;
|
|
|
|
dglLineWidth = NULL;
|
|
|
|
dglLoadIdentity = NULL;
|
|
|
|
dglMatrixMode = NULL;
|
|
|
|
dglOrtho = NULL;
|
|
|
|
dglPointSize = NULL;
|
|
|
|
dglPopMatrix = NULL;
|
|
|
|
dglPrioritizeTextures = NULL;
|
|
|
|
dglPushMatrix = NULL;
|
|
|
|
dglReadBuffer = NULL;
|
|
|
|
dglReadPixels = NULL;
|
|
|
|
dglScalef = NULL;
|
|
|
|
dglShadeModel = NULL;
|
|
|
|
dglTexCoordPointer = NULL;
|
|
|
|
dglTexEnvi = NULL;
|
|
|
|
dglTexImage2D = NULL;
|
|
|
|
dglTexParameterf = NULL;
|
|
|
|
dglTexParameteri = NULL;
|
|
|
|
dglTranslatef = NULL;
|
|
|
|
dglVertexPointer = NULL;
|
|
|
|
dglViewport = NULL;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif //!__LOADGL_H__
|