/*
===========================================================================
Doom 3 BFG Edition GPL Source Code
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").
Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Doom 3 BFG Edition Source Code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Doom 3 BFG Edition Source Code. If not, see .
In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below.
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
===========================================================================
*/
/*
** QGL.H
*/
#ifndef __QGL_H__
#define __QGL_H__
#include
#ifndef APIENTRY
#define APIENTRY
#endif
#ifndef WINAPI
#define WINAPI
#endif
// only use local glext.h if we are not using the system one already
// http://oss.sgi.com/projects/ogl-sample/ABI/
#ifndef GL_GLEXT_VERSION
#include "glext.h"
#endif
typedef void ( *GLExtension_t )( void );
#ifdef __cplusplus
extern "C" {
#endif
GLExtension_t GLimp_ExtensionPointer( const char* name );
#ifdef __cplusplus
}
#endif
// GL_EXT_direct_state_access
extern PFNGLBINDMULTITEXTUREEXTPROC qglBindMultiTextureEXT;
// GL_ARB_texture_compression
extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC qglCompressedTexImage2DARB;
extern PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC qglCompressedTexSubImage2DARB;
extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC qglGetCompressedTexImageARB;
// GL_ARB_vertex_buffer_object
extern PFNGLBINDBUFFERARBPROC qglBindBufferARB;
extern PFNGLBINDBUFFERRANGEPROC qglBindBufferRange;
extern PFNGLDELETEBUFFERSARBPROC qglDeleteBuffersARB;
extern PFNGLGENBUFFERSARBPROC qglGenBuffersARB;
extern PFNGLISBUFFERARBPROC qglIsBufferARB;
extern PFNGLBUFFERDATAARBPROC qglBufferDataARB;
extern PFNGLBUFFERSUBDATAARBPROC qglBufferSubDataARB;
extern PFNGLGETBUFFERSUBDATAARBPROC qglGetBufferSubDataARB;
extern PFNGLMAPBUFFERARBPROC qglMapBufferARB;
extern PFNGLUNMAPBUFFERARBPROC qglUnmapBufferARB;
extern PFNGLGETBUFFERPARAMETERIVARBPROC qglGetBufferParameterivARB;
extern PFNGLGETBUFFERPOINTERVARBPROC qglGetBufferPointervARB;
// GL_ARB_map_buffer_Range
extern PFNGLMAPBUFFERRANGEPROC qglMapBufferRange;
// GL_ARB_draw_elements_base_vertex
extern PFNGLDRAWELEMENTSBASEVERTEXPROC qglDrawElementsBaseVertex;
// GL_ARB_vertex_array_object
extern PFNGLGENVERTEXARRAYSPROC qglGenVertexArrays;
extern PFNGLBINDVERTEXARRAYPROC qglBindVertexArray;
extern PFNGLDELETEVERTEXARRAYSPROC qglDeleteVertexArrays;
// GL_ARB_vertex_program / GL_ARB_fragment_program
extern PFNGLVERTEXATTRIBPOINTERARBPROC qglVertexAttribPointerARB;
extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC qglEnableVertexAttribArrayARB;
extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC qglDisableVertexAttribArrayARB;
extern PFNGLPROGRAMSTRINGARBPROC qglProgramStringARB;
extern PFNGLBINDPROGRAMARBPROC qglBindProgramARB;
extern PFNGLGENPROGRAMSARBPROC qglGenProgramsARB;
extern PFNGLDELETEPROGRAMSARBPROC qglDeleteProgramsARB;
extern PFNGLPROGRAMENVPARAMETER4FVARBPROC qglProgramEnvParameter4fvARB;
extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC qglProgramLocalParameter4fvARB;
// GLSL / OpenGL 2.0
extern PFNGLCREATESHADERPROC qglCreateShader;
extern PFNGLDELETESHADERPROC qglDeleteShader;
extern PFNGLSHADERSOURCEPROC qglShaderSource;
extern PFNGLCOMPILESHADERPROC qglCompileShader;
extern PFNGLGETSHADERIVPROC qglGetShaderiv;
extern PFNGLGETSHADERINFOLOGPROC qglGetShaderInfoLog;
extern PFNGLCREATEPROGRAMPROC qglCreateProgram;
extern PFNGLDELETEPROGRAMPROC qglDeleteProgram;
extern PFNGLATTACHSHADERPROC qglAttachShader;
extern PFNGLDETACHSHADERPROC qglDetachShader;
extern PFNGLLINKPROGRAMPROC qglLinkProgram;
extern PFNGLUSEPROGRAMPROC qglUseProgram;
extern PFNGLGETPROGRAMIVPROC qglGetProgramiv;
extern PFNGLGETPROGRAMINFOLOGPROC qglGetProgramInfoLog;
extern PFNGLPROGRAMPARAMETERIPROC qglProgramParameteri;
extern PFNGLBINDATTRIBLOCATIONPROC qglBindAttribLocation;
extern PFNGLGETUNIFORMLOCATIONPROC qglGetUniformLocation;
extern PFNGLUNIFORM1IPROC qglUniform1i;
extern PFNGLUNIFORM4FVPROC qglUniform4fv;
// GL_ARB_uniform_buffer_object
extern PFNGLGETUNIFORMBLOCKINDEXPROC qglGetUniformBlockIndex;
extern PFNGLUNIFORMBLOCKBINDINGPROC qglUniformBlockBinding;
// GL_ATI_separate_stencil / OpenGL 2.0 separate stencil
extern PFNGLSTENCILOPSEPARATEATIPROC qglStencilOpSeparate;
extern PFNGLSTENCILFUNCSEPARATEATIPROC qglStencilFuncSeparate;
// GL_EXT_depth_bounds_test
extern PFNGLDEPTHBOUNDSEXTPROC qglDepthBoundsEXT;
// GL_ARB_sync
extern PFNGLFENCESYNCPROC qglFenceSync;
extern PFNGLISSYNCPROC qglIsSync;
extern PFNGLCLIENTWAITSYNCPROC qglClientWaitSync;
extern PFNGLDELETESYNCPROC qglDeleteSync;
// GL_ARB_occlusion_query
extern PFNGLGENQUERIESARBPROC qglGenQueriesARB;
extern PFNGLDELETEQUERIESARBPROC qglDeleteQueriesARB;
extern PFNGLISQUERYARBPROC qglIsQueryARB;
extern PFNGLBEGINQUERYARBPROC qglBeginQueryARB;
extern PFNGLENDQUERYARBPROC qglEndQueryARB;
extern PFNGLGETQUERYIVARBPROC qglGetQueryivARB;
extern PFNGLGETQUERYOBJECTIVARBPROC qglGetQueryObjectivARB;
extern PFNGLGETQUERYOBJECTUIVARBPROC qglGetQueryObjectuivARB;
// GL_ARB_timer_query / GL_EXT_timer_query
extern PFNGLGETQUERYOBJECTUI64VEXTPROC qglGetQueryObjectui64vEXT;
// GL_ARB_debug_output
extern PFNGLDEBUGMESSAGECONTROLARBPROC qglDebugMessageControlARB;
extern PFNGLDEBUGMESSAGEINSERTARBPROC qglDebugMessageInsertARB;
extern PFNGLDEBUGMESSAGECALLBACKARBPROC qglDebugMessageCallbackARB;
extern PFNGLGETDEBUGMESSAGELOGARBPROC qglGetDebugMessageLogARB;
//===========================================================================
// non-windows systems will just redefine qgl* to gl*
#if defined( __APPLE__ ) || defined( ID_GL_HARDLINK )
#include "qgl_linked.h"
#else
// windows systems use a function pointer for each call so we can do our log file intercepts
extern void ( APIENTRY* qglAccum )( GLenum op, GLfloat value );
extern void ( APIENTRY* qglAlphaFunc )( GLenum func, GLclampf ref );
extern GLboolean( APIENTRY* qglAreTexturesResident )( GLsizei n, const GLuint* textures, GLboolean* residences );
extern void ( APIENTRY* qglArrayElement )( GLint i );
extern void ( APIENTRY* qglBegin )( GLenum mode );
extern void ( APIENTRY* qglBindTexture )( GLenum target, GLuint texture );
extern void ( APIENTRY* qglBitmap )( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte* bitmap );
extern void ( APIENTRY* qglBlendFunc )( GLenum sfactor, GLenum dfactor );
extern void ( APIENTRY* qglCallList )( GLuint list );
extern void ( APIENTRY* qglCallLists )( GLsizei n, GLenum type, const GLvoid* lists );
extern void ( APIENTRY* qglClear )( GLbitfield mask );
extern void ( APIENTRY* qglClearAccum )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
extern void ( APIENTRY* qglClearColor )( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
extern void ( APIENTRY* qglClearDepth )( GLclampd depth );
extern void ( APIENTRY* qglClearIndex )( GLfloat c );
extern void ( APIENTRY* qglClearStencil )( GLint s );
extern void ( APIENTRY* qglClipPlane )( GLenum plane, const GLdouble* equation );
extern void ( APIENTRY* qglColor3b )( GLbyte red, GLbyte green, GLbyte blue );
extern void ( APIENTRY* qglColor3bv )( const GLbyte* v );
extern void ( APIENTRY* qglColor3d )( GLdouble red, GLdouble green, GLdouble blue );
extern void ( APIENTRY* qglColor3dv )( const GLdouble* v );
extern void ( APIENTRY* qglColor3f )( GLfloat red, GLfloat green, GLfloat blue );
extern void ( APIENTRY* qglColor3fv )( const GLfloat* v );
extern void ( APIENTRY* qglColor3i )( GLint red, GLint green, GLint blue );
extern void ( APIENTRY* qglColor3iv )( const GLint* v );
extern void ( APIENTRY* qglColor3s )( GLshort red, GLshort green, GLshort blue );
extern void ( APIENTRY* qglColor3sv )( const GLshort* v );
extern void ( APIENTRY* qglColor3ub )( GLubyte red, GLubyte green, GLubyte blue );
extern void ( APIENTRY* qglColor3ubv )( const GLubyte* v );
extern void ( APIENTRY* qglColor3ui )( GLuint red, GLuint green, GLuint blue );
extern void ( APIENTRY* qglColor3uiv )( const GLuint* v );
extern void ( APIENTRY* qglColor3us )( GLushort red, GLushort green, GLushort blue );
extern void ( APIENTRY* qglColor3usv )( const GLushort* v );
extern void ( APIENTRY* qglColor4b )( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );
extern void ( APIENTRY* qglColor4bv )( const GLbyte* v );
extern void ( APIENTRY* qglColor4d )( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );
extern void ( APIENTRY* qglColor4dv )( const GLdouble* v );
extern void ( APIENTRY* qglColor4f )( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
extern void ( APIENTRY* qglColor4fv )( const GLfloat* v );
extern void ( APIENTRY* qglColor4i )( GLint red, GLint green, GLint blue, GLint alpha );
extern void ( APIENTRY* qglColor4iv )( const GLint* v );
extern void ( APIENTRY* qglColor4s )( GLshort red, GLshort green, GLshort blue, GLshort alpha );
extern void ( APIENTRY* qglColor4sv )( const GLshort* v );
extern void ( APIENTRY* qglColor4ub )( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
extern void ( APIENTRY* qglColor4ubv )( const GLubyte* v );
extern void ( APIENTRY* qglColor4ui )( GLuint red, GLuint green, GLuint blue, GLuint alpha );
extern void ( APIENTRY* qglColor4uiv )( const GLuint* v );
extern void ( APIENTRY* qglColor4us )( GLushort red, GLushort green, GLushort blue, GLushort alpha );
extern void ( APIENTRY* qglColor4usv )( const GLushort* v );
extern void ( APIENTRY* qglColorMask )( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
extern void ( APIENTRY* qglColorMaterial )( GLenum face, GLenum mode );
extern void ( APIENTRY* qglColorPointer )( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer );
extern void ( APIENTRY* qglCopyPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );
extern void ( APIENTRY* qglCopyTexImage1D )( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border );
extern void ( APIENTRY* qglCopyTexImage2D )( GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
extern void ( APIENTRY* qglCopyTexSubImage1D )( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
extern void ( APIENTRY* qglCopyTexSubImage2D )( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
extern void ( APIENTRY* qglCullFace )( GLenum mode );
extern void ( APIENTRY* qglDeleteLists )( GLuint list, GLsizei range );
extern void ( APIENTRY* qglDeleteTextures )( GLsizei n, const GLuint* textures );
extern void ( APIENTRY* qglDepthFunc )( GLenum func );
extern void ( APIENTRY* qglDepthMask )( GLboolean flag );
extern void ( APIENTRY* qglDepthRange )( GLclampd zNear, GLclampd zFar );
extern void ( APIENTRY* qglDisable )( GLenum cap );
extern void ( APIENTRY* qglDisableClientState )( GLenum array );
extern void ( APIENTRY* qglDrawArrays )( GLenum mode, GLint first, GLsizei count );
extern void ( APIENTRY* qglDrawBuffer )( GLenum mode );
extern void ( APIENTRY* qglDrawElements )( GLenum mode, GLsizei count, GLenum type, const GLvoid* indices );
extern void ( APIENTRY* qglDrawPixels )( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels );
extern void ( APIENTRY* qglEdgeFlag )( GLboolean flag );
extern void ( APIENTRY* qglEdgeFlagPointer )( GLsizei stride, const GLvoid* pointer );
extern void ( APIENTRY* qglEdgeFlagv )( const GLboolean* flag );
extern void ( APIENTRY* qglEnable )( GLenum cap );
extern void ( APIENTRY* qglEnableClientState )( GLenum array );
extern void ( APIENTRY* qglEnd )( void );
extern void ( APIENTRY* qglEndList )( void );
extern void ( APIENTRY* qglEvalCoord1d )( GLdouble u );
extern void ( APIENTRY* qglEvalCoord1dv )( const GLdouble* u );
extern void ( APIENTRY* qglEvalCoord1f )( GLfloat u );
extern void ( APIENTRY* qglEvalCoord1fv )( const GLfloat* u );
extern void ( APIENTRY* qglEvalCoord2d )( GLdouble u, GLdouble v );
extern void ( APIENTRY* qglEvalCoord2dv )( const GLdouble* u );
extern void ( APIENTRY* qglEvalCoord2f )( GLfloat u, GLfloat v );
extern void ( APIENTRY* qglEvalCoord2fv )( const GLfloat* u );
extern void ( APIENTRY* qglEvalMesh1 )( GLenum mode, GLint i1, GLint i2 );
extern void ( APIENTRY* qglEvalMesh2 )( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
extern void ( APIENTRY* qglEvalPoint1 )( GLint i );
extern void ( APIENTRY* qglEvalPoint2 )( GLint i, GLint j );
extern void ( APIENTRY* qglFeedbackBuffer )( GLsizei size, GLenum type, GLfloat* buffer );
extern void ( APIENTRY* qglFinish )( void );
extern void ( APIENTRY* qglFlush )( void );
extern void ( APIENTRY* qglFogf )( GLenum pname, GLfloat param );
extern void ( APIENTRY* qglFogfv )( GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglFogi )( GLenum pname, GLint param );
extern void ( APIENTRY* qglFogiv )( GLenum pname, const GLint* params );
extern void ( APIENTRY* qglFrontFace )( GLenum mode );
extern void ( APIENTRY* qglFrustum )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
extern GLuint( APIENTRY* qglGenLists )( GLsizei range );
extern void ( APIENTRY* qglGenTextures )( GLsizei n, GLuint* textures );
extern void ( APIENTRY* qglGetBooleanv )( GLenum pname, GLboolean* params );
extern void ( APIENTRY* qglGetClipPlane )( GLenum plane, GLdouble* equation );
extern void ( APIENTRY* qglGetDoublev )( GLenum pname, GLdouble* params );
extern GLenum( APIENTRY* qglGetError )( void );
extern void ( APIENTRY* qglGetFloatv )( GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetIntegerv )( GLenum pname, GLint* params );
extern void ( APIENTRY* qglGetLightfv )( GLenum light, GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetLightiv )( GLenum light, GLenum pname, GLint* params );
extern void ( APIENTRY* qglGetMapdv )( GLenum target, GLenum query, GLdouble* v );
extern void ( APIENTRY* qglGetMapfv )( GLenum target, GLenum query, GLfloat* v );
extern void ( APIENTRY* qglGetMapiv )( GLenum target, GLenum query, GLint* v );
extern void ( APIENTRY* qglGetMaterialfv )( GLenum face, GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetMaterialiv )( GLenum face, GLenum pname, GLint* params );
extern void ( APIENTRY* qglGetPixelMapfv )( GLenum map, GLfloat* values );
extern void ( APIENTRY* qglGetPixelMapuiv )( GLenum map, GLuint* values );
extern void ( APIENTRY* qglGetPixelMapusv )( GLenum map, GLushort* values );
extern void ( APIENTRY* qglGetPointerv )( GLenum pname, GLvoid* *params );
extern void ( APIENTRY* qglGetPolygonStipple )( GLubyte* mask );
extern const GLubyte* ( APIENTRY* qglGetString )( GLenum name );
extern void ( APIENTRY* qglGetTexEnvfv )( GLenum target, GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetTexEnviv )( GLenum target, GLenum pname, GLint* params );
extern void ( APIENTRY* qglGetTexGendv )( GLenum coord, GLenum pname, GLdouble* params );
extern void ( APIENTRY* qglGetTexGenfv )( GLenum coord, GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetTexGeniv )( GLenum coord, GLenum pname, GLint* params );
extern void ( APIENTRY* qglGetTexImage )( GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels );
extern void ( APIENTRY* qglGetTexLevelParameterfv )( GLenum target, GLint level, GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetTexLevelParameteriv )( GLenum target, GLint level, GLenum pname, GLint* params );
extern void ( APIENTRY* qglGetTexParameterfv )( GLenum target, GLenum pname, GLfloat* params );
extern void ( APIENTRY* qglGetTexParameteriv )( GLenum target, GLenum pname, GLint* params );
extern void ( APIENTRY* qglHint )( GLenum target, GLenum mode );
extern void ( APIENTRY* qglIndexMask )( GLuint mask );
extern void ( APIENTRY* qglIndexPointer )( GLenum type, GLsizei stride, const GLvoid* pointer );
extern void ( APIENTRY* qglIndexd )( GLdouble c );
extern void ( APIENTRY* qglIndexdv )( const GLdouble* c );
extern void ( APIENTRY* qglIndexf )( GLfloat c );
extern void ( APIENTRY* qglIndexfv )( const GLfloat* c );
extern void ( APIENTRY* qglIndexi )( GLint c );
extern void ( APIENTRY* qglIndexiv )( const GLint* c );
extern void ( APIENTRY* qglIndexs )( GLshort c );
extern void ( APIENTRY* qglIndexsv )( const GLshort* c );
extern void ( APIENTRY* qglIndexub )( GLubyte c );
extern void ( APIENTRY* qglIndexubv )( const GLubyte* c );
extern void ( APIENTRY* qglInitNames )( void );
extern void ( APIENTRY* qglInterleavedArrays )( GLenum format, GLsizei stride, const GLvoid* pointer );
extern GLboolean( APIENTRY* qglIsEnabled )( GLenum cap );
extern GLboolean( APIENTRY* qglIsList )( GLuint list );
extern GLboolean( APIENTRY* qglIsTexture )( GLuint texture );
extern void ( APIENTRY* qglLightModelf )( GLenum pname, GLfloat param );
extern void ( APIENTRY* qglLightModelfv )( GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglLightModeli )( GLenum pname, GLint param );
extern void ( APIENTRY* qglLightModeliv )( GLenum pname, const GLint* params );
extern void ( APIENTRY* qglLightf )( GLenum light, GLenum pname, GLfloat param );
extern void ( APIENTRY* qglLightfv )( GLenum light, GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglLighti )( GLenum light, GLenum pname, GLint param );
extern void ( APIENTRY* qglLightiv )( GLenum light, GLenum pname, const GLint* params );
extern void ( APIENTRY* qglLineStipple )( GLint factor, GLushort pattern );
extern void ( APIENTRY* qglLineWidth )( GLfloat width );
extern void ( APIENTRY* qglListBase )( GLuint base );
extern void ( APIENTRY* qglLoadIdentity )( void );
extern void ( APIENTRY* qglLoadMatrixd )( const GLdouble* m );
extern void ( APIENTRY* qglLoadMatrixf )( const GLfloat* m );
extern void ( APIENTRY* qglLoadName )( GLuint name );
extern void ( APIENTRY* qglLogicOp )( GLenum opcode );
extern void ( APIENTRY* qglMap1d )( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points );
extern void ( APIENTRY* qglMap1f )( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points );
extern void ( APIENTRY* qglMap2d )( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points );
extern void ( APIENTRY* qglMap2f )( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points );
extern void ( APIENTRY* qglMapGrid1d )( GLint un, GLdouble u1, GLdouble u2 );
extern void ( APIENTRY* qglMapGrid1f )( GLint un, GLfloat u1, GLfloat u2 );
extern void ( APIENTRY* qglMapGrid2d )( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );
extern void ( APIENTRY* qglMapGrid2f )( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );
extern void ( APIENTRY* qglMaterialf )( GLenum face, GLenum pname, GLfloat param );
extern void ( APIENTRY* qglMaterialfv )( GLenum face, GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglMateriali )( GLenum face, GLenum pname, GLint param );
extern void ( APIENTRY* qglMaterialiv )( GLenum face, GLenum pname, const GLint* params );
extern void ( APIENTRY* qglMatrixMode )( GLenum mode );
extern void ( APIENTRY* qglMultMatrixd )( const GLdouble* m );
extern void ( APIENTRY* qglMultMatrixf )( const GLfloat* m );
extern void ( APIENTRY* qglNewList )( GLuint list, GLenum mode );
extern void ( APIENTRY* qglNormal3b )( GLbyte nx, GLbyte ny, GLbyte nz );
extern void ( APIENTRY* qglNormal3bv )( const GLbyte* v );
extern void ( APIENTRY* qglNormal3d )( GLdouble nx, GLdouble ny, GLdouble nz );
extern void ( APIENTRY* qglNormal3dv )( const GLdouble* v );
extern void ( APIENTRY* qglNormal3f )( GLfloat nx, GLfloat ny, GLfloat nz );
extern void ( APIENTRY* qglNormal3fv )( const GLfloat* v );
extern void ( APIENTRY* qglNormal3i )( GLint nx, GLint ny, GLint nz );
extern void ( APIENTRY* qglNormal3iv )( const GLint* v );
extern void ( APIENTRY* qglNormal3s )( GLshort nx, GLshort ny, GLshort nz );
extern void ( APIENTRY* qglNormal3sv )( const GLshort* v );
extern void ( APIENTRY* qglNormalPointer )( GLenum type, GLsizei stride, const GLvoid* pointer );
extern void ( APIENTRY* qglOrtho )( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar );
extern void ( APIENTRY* qglPassThrough )( GLfloat token );
extern void ( APIENTRY* qglPixelMapfv )( GLenum map, GLsizei mapsize, const GLfloat* values );
extern void ( APIENTRY* qglPixelMapuiv )( GLenum map, GLsizei mapsize, const GLuint* values );
extern void ( APIENTRY* qglPixelMapusv )( GLenum map, GLsizei mapsize, const GLushort* values );
extern void ( APIENTRY* qglPixelStoref )( GLenum pname, GLfloat param );
extern void ( APIENTRY* qglPixelStorei )( GLenum pname, GLint param );
extern void ( APIENTRY* qglPixelTransferf )( GLenum pname, GLfloat param );
extern void ( APIENTRY* qglPixelTransferi )( GLenum pname, GLint param );
extern void ( APIENTRY* qglPixelZoom )( GLfloat xfactor, GLfloat yfactor );
extern void ( APIENTRY* qglPointSize )( GLfloat size );
extern void ( APIENTRY* qglPolygonMode )( GLenum face, GLenum mode );
extern void ( APIENTRY* qglPolygonOffset )( GLfloat factor, GLfloat units );
extern void ( APIENTRY* qglPolygonStipple )( const GLubyte* mask );
extern void ( APIENTRY* qglPopAttrib )( void );
extern void ( APIENTRY* qglPopClientAttrib )( void );
extern void ( APIENTRY* qglPopMatrix )( void );
extern void ( APIENTRY* qglPopName )( void );
extern void ( APIENTRY* qglPrioritizeTextures )( GLsizei n, const GLuint* textures, const GLclampf* priorities );
extern void ( APIENTRY* qglPushAttrib )( GLbitfield mask );
extern void ( APIENTRY* qglPushClientAttrib )( GLbitfield mask );
extern void ( APIENTRY* qglPushMatrix )( void );
extern void ( APIENTRY* qglPushName )( GLuint name );
extern void ( APIENTRY* qglRasterPos2d )( GLdouble x, GLdouble y );
extern void ( APIENTRY* qglRasterPos2dv )( const GLdouble* v );
extern void ( APIENTRY* qglRasterPos2f )( GLfloat x, GLfloat y );
extern void ( APIENTRY* qglRasterPos2fv )( const GLfloat* v );
extern void ( APIENTRY* qglRasterPos2i )( GLint x, GLint y );
extern void ( APIENTRY* qglRasterPos2iv )( const GLint* v );
extern void ( APIENTRY* qglRasterPos2s )( GLshort x, GLshort y );
extern void ( APIENTRY* qglRasterPos2sv )( const GLshort* v );
extern void ( APIENTRY* qglRasterPos3d )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY* qglRasterPos3dv )( const GLdouble* v );
extern void ( APIENTRY* qglRasterPos3f )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY* qglRasterPos3fv )( const GLfloat* v );
extern void ( APIENTRY* qglRasterPos3i )( GLint x, GLint y, GLint z );
extern void ( APIENTRY* qglRasterPos3iv )( const GLint* v );
extern void ( APIENTRY* qglRasterPos3s )( GLshort x, GLshort y, GLshort z );
extern void ( APIENTRY* qglRasterPos3sv )( const GLshort* v );
extern void ( APIENTRY* qglRasterPos4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
extern void ( APIENTRY* qglRasterPos4dv )( const GLdouble* v );
extern void ( APIENTRY* qglRasterPos4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
extern void ( APIENTRY* qglRasterPos4fv )( const GLfloat* v );
extern void ( APIENTRY* qglRasterPos4i )( GLint x, GLint y, GLint z, GLint w );
extern void ( APIENTRY* qglRasterPos4iv )( const GLint* v );
extern void ( APIENTRY* qglRasterPos4s )( GLshort x, GLshort y, GLshort z, GLshort w );
extern void ( APIENTRY* qglRasterPos4sv )( const GLshort* v );
extern void ( APIENTRY* qglReadBuffer )( GLenum mode );
extern void ( APIENTRY* qglReadPixels )( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels );
extern void ( APIENTRY* qglRectd )( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
extern void ( APIENTRY* qglRectdv )( const GLdouble* v1, const GLdouble* v2 );
extern void ( APIENTRY* qglRectf )( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
extern void ( APIENTRY* qglRectfv )( const GLfloat* v1, const GLfloat* v2 );
extern void ( APIENTRY* qglRecti )( GLint x1, GLint y1, GLint x2, GLint y2 );
extern void ( APIENTRY* qglRectiv )( const GLint* v1, const GLint* v2 );
extern void ( APIENTRY* qglRects )( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
extern void ( APIENTRY* qglRectsv )( const GLshort* v1, const GLshort* v2 );
extern GLint( APIENTRY* qglRenderMode )( GLenum mode );
extern void ( APIENTRY* qglRotated )( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY* qglRotatef )( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY* qglScaled )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY* qglScalef )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY* qglScissor )( GLint x, GLint y, GLsizei width, GLsizei height );
extern void ( APIENTRY* qglSelectBuffer )( GLsizei size, GLuint* buffer );
// DG: deprecated in opengl 3.2 and not needed because we don't do fixed function pipeline
// extern void ( APIENTRY* qglShadeModel )( GLenum mode );
// DG end
extern void ( APIENTRY* qglStencilFunc )( GLenum func, GLint ref, GLuint mask );
extern void ( APIENTRY* qglStencilMask )( GLuint mask );
extern void ( APIENTRY* qglStencilOp )( GLenum fail, GLenum zfail, GLenum zpass );
extern void ( APIENTRY* qglTexCoord1d )( GLdouble s );
extern void ( APIENTRY* qglTexCoord1dv )( const GLdouble* v );
extern void ( APIENTRY* qglTexCoord1f )( GLfloat s );
extern void ( APIENTRY* qglTexCoord1fv )( const GLfloat* v );
extern void ( APIENTRY* qglTexCoord1i )( GLint s );
extern void ( APIENTRY* qglTexCoord1iv )( const GLint* v );
extern void ( APIENTRY* qglTexCoord1s )( GLshort s );
extern void ( APIENTRY* qglTexCoord1sv )( const GLshort* v );
extern void ( APIENTRY* qglTexCoord2d )( GLdouble s, GLdouble t );
extern void ( APIENTRY* qglTexCoord2dv )( const GLdouble* v );
extern void ( APIENTRY* qglTexCoord2f )( GLfloat s, GLfloat t );
extern void ( APIENTRY* qglTexCoord2fv )( const GLfloat* v );
extern void ( APIENTRY* qglTexCoord2i )( GLint s, GLint t );
extern void ( APIENTRY* qglTexCoord2iv )( const GLint* v );
extern void ( APIENTRY* qglTexCoord2s )( GLshort s, GLshort t );
extern void ( APIENTRY* qglTexCoord2sv )( const GLshort* v );
extern void ( APIENTRY* qglTexCoord3d )( GLdouble s, GLdouble t, GLdouble r );
extern void ( APIENTRY* qglTexCoord3dv )( const GLdouble* v );
extern void ( APIENTRY* qglTexCoord3f )( GLfloat s, GLfloat t, GLfloat r );
extern void ( APIENTRY* qglTexCoord3fv )( const GLfloat* v );
extern void ( APIENTRY* qglTexCoord3i )( GLint s, GLint t, GLint r );
extern void ( APIENTRY* qglTexCoord3iv )( const GLint* v );
extern void ( APIENTRY* qglTexCoord3s )( GLshort s, GLshort t, GLshort r );
extern void ( APIENTRY* qglTexCoord3sv )( const GLshort* v );
extern void ( APIENTRY* qglTexCoord4d )( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
extern void ( APIENTRY* qglTexCoord4dv )( const GLdouble* v );
extern void ( APIENTRY* qglTexCoord4f )( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
extern void ( APIENTRY* qglTexCoord4fv )( const GLfloat* v );
extern void ( APIENTRY* qglTexCoord4i )( GLint s, GLint t, GLint r, GLint q );
extern void ( APIENTRY* qglTexCoord4iv )( const GLint* v );
extern void ( APIENTRY* qglTexCoord4s )( GLshort s, GLshort t, GLshort r, GLshort q );
extern void ( APIENTRY* qglTexCoord4sv )( const GLshort* v );
extern void ( APIENTRY* qglTexCoordPointer )( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer );
extern void ( APIENTRY* qglTexEnvf )( GLenum target, GLenum pname, GLfloat param );
extern void ( APIENTRY* qglTexEnvfv )( GLenum target, GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglTexEnvi )( GLenum target, GLenum pname, GLint param );
extern void ( APIENTRY* qglTexEnviv )( GLenum target, GLenum pname, const GLint* params );
extern void ( APIENTRY* qglTexGend )( GLenum coord, GLenum pname, GLdouble param );
extern void ( APIENTRY* qglTexGendv )( GLenum coord, GLenum pname, const GLdouble* params );
extern void ( APIENTRY* qglTexGenf )( GLenum coord, GLenum pname, GLfloat param );
extern void ( APIENTRY* qglTexGenfv )( GLenum coord, GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglTexGeni )( GLenum coord, GLenum pname, GLint param );
extern void ( APIENTRY* qglTexGeniv )( GLenum coord, GLenum pname, const GLint* params );
extern void ( APIENTRY* qglTexImage1D )( GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid* pixels );
extern void ( APIENTRY* qglTexImage2D )( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels );
extern void ( APIENTRY* qglTexParameterf )( GLenum target, GLenum pname, GLfloat param );
extern void ( APIENTRY* qglTexParameterfv )( GLenum target, GLenum pname, const GLfloat* params );
extern void ( APIENTRY* qglTexParameteri )( GLenum target, GLenum pname, GLint param );
extern void ( APIENTRY* qglTexParameteriv )( GLenum target, GLenum pname, const GLint* params );
extern void ( APIENTRY* qglTexSubImage1D )( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid* pixels );
extern void ( APIENTRY* qglTexSubImage2D )( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels );
extern void ( APIENTRY* qglTranslated )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY* qglTranslatef )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY* qglVertex2d )( GLdouble x, GLdouble y );
extern void ( APIENTRY* qglVertex2dv )( const GLdouble* v );
extern void ( APIENTRY* qglVertex2f )( GLfloat x, GLfloat y );
extern void ( APIENTRY* qglVertex2fv )( const GLfloat* v );
extern void ( APIENTRY* qglVertex2i )( GLint x, GLint y );
extern void ( APIENTRY* qglVertex2iv )( const GLint* v );
extern void ( APIENTRY* qglVertex2s )( GLshort x, GLshort y );
extern void ( APIENTRY* qglVertex2sv )( const GLshort* v );
extern void ( APIENTRY* qglVertex3d )( GLdouble x, GLdouble y, GLdouble z );
extern void ( APIENTRY* qglVertex3dv )( const GLdouble* v );
extern void ( APIENTRY* qglVertex3f )( GLfloat x, GLfloat y, GLfloat z );
extern void ( APIENTRY* qglVertex3fv )( const GLfloat* v );
extern void ( APIENTRY* qglVertex3i )( GLint x, GLint y, GLint z );
extern void ( APIENTRY* qglVertex3iv )( const GLint* v );
extern void ( APIENTRY* qglVertex3s )( GLshort x, GLshort y, GLshort z );
extern void ( APIENTRY* qglVertex3sv )( const GLshort* v );
extern void ( APIENTRY* qglVertex4d )( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
extern void ( APIENTRY* qglVertex4dv )( const GLdouble* v );
extern void ( APIENTRY* qglVertex4f )( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
extern void ( APIENTRY* qglVertex4fv )( const GLfloat* v );
extern void ( APIENTRY* qglVertex4i )( GLint x, GLint y, GLint z, GLint w );
extern void ( APIENTRY* qglVertex4iv )( const GLint* v );
extern void ( APIENTRY* qglVertex4s )( GLshort x, GLshort y, GLshort z, GLshort w );
extern void ( APIENTRY* qglVertex4sv )( const GLshort* v );
extern void ( APIENTRY* qglVertexPointer )( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer );
extern void ( APIENTRY* qglViewport )( GLint x, GLint y, GLsizei width, GLsizei height );
// RB begin
#if defined(_WIN32)
extern int ( WINAPI* qwglChoosePixelFormat )( HDC, CONST PIXELFORMATDESCRIPTOR* );
extern int ( WINAPI* qwglDescribePixelFormat )( HDC, int, UINT, LPPIXELFORMATDESCRIPTOR );
extern int ( WINAPI* qwglGetPixelFormat )( HDC );
extern BOOL ( WINAPI* qwglSetPixelFormat )( HDC, int, CONST PIXELFORMATDESCRIPTOR* );
extern BOOL ( WINAPI* qwglSwapBuffers )( HDC );
extern BOOL ( WINAPI* qwglCopyContext )( HGLRC, HGLRC, UINT );
extern HGLRC( WINAPI* qwglCreateContext )( HDC );
extern HGLRC( WINAPI* qwglCreateLayerContext )( HDC, int );
extern BOOL ( WINAPI* qwglDeleteContext )( HGLRC );
extern HGLRC( WINAPI* qwglGetCurrentContext )( VOID );
extern HDC( WINAPI* qwglGetCurrentDC )( VOID );
extern PROC( WINAPI* qwglGetProcAddress )( LPCSTR );
extern BOOL ( WINAPI* qwglMakeCurrent )( HDC, HGLRC );
extern BOOL ( WINAPI* qwglShareLists )( HGLRC, HGLRC );
extern BOOL ( WINAPI* qwglUseFontBitmaps )( HDC, DWORD, DWORD, DWORD );
extern BOOL ( WINAPI* qwglUseFontOutlines )( HDC, DWORD, DWORD, DWORD, FLOAT,
FLOAT, int, LPGLYPHMETRICSFLOAT );
extern BOOL ( WINAPI* qwglDescribeLayerPlane )( HDC, int, int, UINT,
LPLAYERPLANEDESCRIPTOR );
extern int ( WINAPI* qwglSetLayerPaletteEntries )( HDC, int, int, int,
CONST COLORREF* );
extern int ( WINAPI* qwglGetLayerPaletteEntries )( HDC, int, int, int,
COLORREF* );
extern BOOL ( WINAPI* qwglRealizeLayerPalette )( HDC, int, BOOL );
extern BOOL ( WINAPI* qwglSwapLayerBuffers )( HDC, UINT );
#endif
// RB end
#endif // hardlinlk vs dlopen
#endif