2004-08-22 22:29:09 +00:00
/*
Copyright ( C ) 1996 - 1997 Id Software , Inc .
This program 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 2
of the License , or ( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
2005-12-01 11:22:20 +00:00
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE .
2004-08-22 22:29:09 +00:00
See the GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
2007-10-12 13:23:46 +00:00
# ifndef GLQUAKE_H
# define GLQUAKE_H
2004-08-22 22:29:09 +00:00
// disable data conversion warnings
# ifdef MSVCDISABLEWARNINGS
# pragma warning(disable : 4244) // MIPS
# pragma warning(disable : 4136) // X86
# pragma warning(disable : 4051) // ALPHA
# endif
2005-12-01 11:22:20 +00:00
2004-08-22 22:29:09 +00:00
# ifdef _WIN32
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
# include <winsock2.h>
2014-03-30 08:55:06 +00:00
# if defined(WINAPI_FAMILY) && !defined(WINRT)
# if WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP
//don't just define it. things that don't #include winquake.h / glquake.h need it too.
# error "WINRT needs to be defined for non-desktop"
# endif
# endif
2004-08-22 22:29:09 +00:00
# endif
# ifndef APIENTRY
# define APIENTRY
# endif
2011-06-16 02:03:57 +00:00
void D3D9_Set2D ( void ) ;
2014-05-10 13:42:13 +00:00
float RadiusFromBounds ( vec3_t mins , vec3_t maxs ) ;
2004-08-22 22:29:09 +00:00
void AddPointToBounds ( vec3_t v , vec3_t mins , vec3_t maxs ) ;
qboolean BoundsIntersect ( vec3_t mins1 , vec3_t maxs1 , vec3_t mins2 , vec3_t maxs2 ) ;
void ClearBounds ( vec3_t mins , vec3_t maxs ) ;
2014-10-05 20:04:11 +00:00
typedef struct builddata_s
{
void ( * buildfunc ) ( model_t * mod , msurface_t * surf , struct builddata_s * bd ) ;
void * facedata ;
} builddata_t ;
void ModBrush_LoadGLStuff ( void * ctx , void * data , size_t a , size_t b ) ; //data === builddata_t
2015-04-14 23:12:17 +00:00
typedef struct
{
int allocated [ LMBLOCK_SIZE_MAX ] ;
int firstlm ;
int lmnum ;
unsigned int width ;
unsigned int height ;
qboolean deluxe ;
} lmalloc_t ;
void Mod_LightmapAllocInit ( lmalloc_t * lmallocator , qboolean hasdeluxe , unsigned int width , unsigned int height , int firstlm ) ; //firstlm is for debugging stray lightmap indexes
void Mod_LightmapAllocDone ( lmalloc_t * lmallocator , model_t * mod ) ;
void Mod_LightmapAllocBlock ( lmalloc_t * lmallocator , int w , int h , unsigned short * x , unsigned short * y , int * tnum ) ;
2009-11-04 21:16:50 +00:00
# ifdef GLQUAKE
2011-09-05 01:48:23 +00:00
# if defined(ANDROID) /*FIXME: actually just to use standard GLES headers instead of full GL*/
# if 1
# include <GLES/gl.h>
2011-09-22 15:57:16 +00:00
# ifndef GL_CLIP_PLANE0
# define GL_CLIP_PLANE0 0x3000
# endif
2011-09-05 01:48:23 +00:00
# else
# include <GLES2/gl2.h>
# define GL_TEXTURE_COORD_ARRAY 0
# endif
/*gles has no doubles*/
# define GLclampd GLclampf
# define GLdouble GLfloat
2012-01-17 07:57:46 +00:00
# define GL_NONE 0
2011-09-05 01:48:23 +00:00
# elif defined(__MACOSX__)
2007-09-22 19:28:27 +00:00
//apple, you suck.
# include <AGL/agl.h>
2014-08-18 10:05:10 +00:00
# elif defined(__APPLE__)
# include <OpenGL/gl.h> //tuna says use this.
//apple really do suck.
2013-04-02 05:18:17 +00:00
# elif defined(NACL) || defined(FTE_TARGET_WEB)
2012-04-09 19:12:12 +00:00
# include <GLES2/gl2.h>
# define GLclampd GLclampf
# define GLdouble GLfloat
2007-09-22 19:28:27 +00:00
# else
# include <GL/gl.h>
2013-04-04 08:08:49 +00:00
# ifdef GL_STATIC
# define GL_GLEXT_PROTOTYPES
# include <GL/glext.h>
# endif
2007-09-22 19:28:27 +00:00
# endif
2004-08-22 22:29:09 +00:00
//#include <GL/glu.h>
# include "glsupp.h"
2014-03-30 00:39:37 +00:00
/*gles2 has no fixed function*/
# ifndef GL_ALPHA_TEST
# define GL_ALPHA_TEST 0
# endif
# ifndef GL_FILL
# define GL_FILL (Sys_Error("GL_FILL was used"),0)
# endif
# ifndef GL_CLAMP
# define GL_CLAMP GL_CLAMP_TO_EDGE
# endif
# ifndef GL_TEXTURE_ENV
# define GL_TEXTURE_ENV (Con_Printf("GL_TEXTURE_ENV was used"),0)
# define GL_TEXTURE_ENV_MODE (Con_Printf("GL_TEXTURE_ENV_MODE was used"),0)
# define GL_VERTEX_ARRAY (Con_Printf("GL_VERTEX_ARRAY was used"),0)
# define GL_COLOR_ARRAY (Con_Printf("GL_COLOR_ARRAY was used"),0)
# define GL_TEXTURE_COORD_ARRAY (Con_Printf("GL_TEXTURE_COORD_ARRAY was used"),0)
# define GL_DECAL (Con_Printf("GL_DECAL was used"),0)
# define GL_ADD (Con_Printf("GL_ADD was used"),0)
# define GL_FLAT (Con_Printf("GL_FLAT was used"),0)
# define GL_SMOOTH (Con_Printf("GL_SMOOTH was used"),0)
# define GL_MODULATE 0x2100
# define GL_PROJECTION (Con_Printf("GL_PROJECTION was used"),0)
# define GL_MODELVIEW (Con_Printf("GL_MODELVIEW was used"),0)
# define GL_CLIP_PLANE0 (Con_Printf("GL_CLIP_PLANE0 was used"),0)
# endif
# ifndef GL_COLOR_ARRAY_POINTER
# define GL_COLOR_ARRAY_POINTER 0
# define GL_NORMAL_ARRAY 0
# define GL_NORMAL_ARRAY_POINTER 0
# define GL_TEXTURE_COORD_ARRAY_POINTER 0
# define GL_VERTEX_ARRAY_POINTER 0
# define GL_BLEND_SRC 0
# define GL_BLEND_DST 0
# endif
# ifndef GL_POLYGON
# define GL_POLYGON (Con_Printf("GL_POLYGON was used"),0)
# define GL_QUAD_STRIP (Con_Printf("GL_QUAD_STRIP was used"),0)
# define GL_QUADS (Con_Printf("GL_QUADS was used"),0)
# endif
2004-08-22 22:29:09 +00:00
2004-10-26 23:06:29 +00:00
void GL_InitFogTexture ( void ) ;
2004-08-22 22:29:09 +00:00
2014-03-30 00:39:37 +00:00
# define GL_BeginRendering()
# define GL_EndRendering()
2004-08-22 22:29:09 +00:00
// Function prototypes for the Texture Object Extension routines
typedef GLboolean ( APIENTRY * ARETEXRESFUNCPTR ) ( GLsizei , const GLuint * ,
const GLboolean * ) ;
typedef void ( APIENTRY * BINDTEXFUNCPTR ) ( GLenum , GLuint ) ;
typedef void ( APIENTRY * DELTEXFUNCPTR ) ( GLsizei , const GLuint * ) ;
typedef void ( APIENTRY * GENTEXFUNCPTR ) ( GLsizei , GLuint * ) ;
typedef GLboolean ( APIENTRY * ISTEXFUNCPTR ) ( GLuint ) ;
typedef void ( APIENTRY * PRIORTEXFUNCPTR ) ( GLsizei , const GLuint * ,
const GLclampf * ) ;
typedef void ( APIENTRY * TEXSUBIMAGEPTR ) ( int , int , int , int , int , int , int , int , void * ) ;
2007-09-22 19:28:27 +00:00
typedef void ( APIENTRY * FTEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC ) ( GLenum target , GLint level , GLint internalformat , GLsizei width , GLsizei height , GLint border , GLsizei imageSize , const GLvoid * data ) ;
typedef void ( APIENTRY * FTEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC ) ( GLenum target , GLint lod , const GLvoid * img ) ;
typedef void ( APIENTRY * FTEPFNGLPNTRIANGLESIATIPROC ) ( GLenum pname , GLint param ) ;
typedef void ( APIENTRY * FTEPFNGLPNTRIANGLESFATIPROC ) ( GLenum pname , GLfloat param ) ;
typedef void ( APIENTRY * FTEPFNGLACTIVESTENCILFACEEXTPROC ) ( GLenum face ) ;
typedef GLhandleARB ( APIENTRYP FTEPFNGLCREATEPROGRAMOBJECTARBPROC ) ( void ) ;
typedef void ( APIENTRYP FTEPFNGLDELETEOBJECTARBPROC ) ( GLhandleARB obj ) ;
typedef void ( APIENTRYP FTEPFNGLUSEPROGRAMOBJECTARBPROC ) ( GLhandleARB programObj ) ;
typedef GLhandleARB ( APIENTRYP FTEPFNGLCREATESHADEROBJECTARBPROC ) ( GLenum shaderType ) ;
typedef void ( APIENTRYP FTEPFNGLSHADERSOURCEARBPROC ) ( GLhandleARB shaderObj , GLsizei count , const GLcharARB * * string , const GLint * length ) ;
typedef void ( APIENTRYP FTEPFNGLCOMPILESHADERARBPROC ) ( GLhandleARB shaderObj ) ;
typedef void ( APIENTRYP FTEPFNGLGETOBJECTPARAMETERIVARBPROC ) ( GLhandleARB obj , GLenum pname , GLint * params ) ;
typedef void ( APIENTRYP FTEPFNGLATTACHOBJECTARBPROC ) ( GLhandleARB containerObj , GLhandleARB obj ) ;
typedef void ( APIENTRYP FTEPFNGLGETINFOLOGARBPROC ) ( GLhandleARB obj , GLsizei maxLength , GLsizei * length , GLcharARB * infoLog ) ;
typedef void ( APIENTRYP FTEPFNGLLINKPROGRAMARBPROC ) ( GLhandleARB programObj ) ;
2011-01-23 03:44:49 +00:00
typedef void ( APIENTRYP FTEPFNGLBINDATTRIBLOCATIONARBPROC ) ( GLhandleARB programObj , GLuint index , GLcharARB * name ) ;
typedef GLint ( APIENTRYP FTEPFNGLGETATTRIBLOCATIONARBPROC ) ( GLhandleARB programObj , const GLcharARB * name ) ;
typedef void ( APIENTRYP FTEPFNGLVERTEXATTRIBPOINTER ) ( GLuint index , GLint size , GLenum type , GLboolean normalized , GLsizei stride , const GLvoid * pointer ) ;
typedef void ( APIENTRYP FTEPFNGLENABLEVERTEXATTRIBARRAY ) ( GLuint index ) ;
typedef void ( APIENTRYP FTEPFNGLDISABLEVERTEXATTRIBARRAY ) ( GLuint index ) ;
2007-09-22 19:28:27 +00:00
typedef GLint ( APIENTRYP FTEPFNGLGETUNIFORMLOCATIONARBPROC ) ( GLhandleARB programObj , const GLcharARB * name ) ;
2011-05-26 16:46:43 +00:00
typedef void ( APIENTRYP FTEPFNGLGETVERTEXATTRIBIV ) ( GLuint index , GLenum pname , GLint * params ) ;
2007-09-22 19:28:27 +00:00
typedef void ( APIENTRYP FTEPFNGLUNIFORM4FARBPROC ) ( GLint location , GLfloat v0 , GLfloat v1 , GLfloat v2 , GLfloat v3 ) ;
2014-03-30 08:55:06 +00:00
typedef void ( APIENTRYP FTEPFNGLUNIFORMMATRIXPROC ) ( GLint location , GLsizei count , GLboolean transpose , const GLfloat * value ) ;
typedef void ( APIENTRYP FTEPFNGLUNIFORM4FVARBPROC ) ( GLint location , GLsizei count , const GLfloat * value ) ;
2007-09-22 19:28:27 +00:00
typedef void ( APIENTRYP FTEPFNGLUNIFORM3FARBPROC ) ( GLint location , GLfloat v0 , GLfloat v1 , GLfloat v2 ) ;
2014-03-30 08:55:06 +00:00
typedef void ( APIENTRYP FTEPFNGLUNIFORM3FVARBPROC ) ( GLint location , GLsizei count , const GLfloat * value ) ;
typedef void ( APIENTRYP FTEPFNGLUNIFORM2FVARBPROC ) ( GLint location , GLsizei count , const GLfloat * value ) ;
2007-09-22 19:28:27 +00:00
typedef void ( APIENTRYP FTEPFNGLUNIFORM1IARBPROC ) ( GLint location , GLint v0 ) ;
typedef void ( APIENTRYP FTEPFNGLUNIFORM1FARBPROC ) ( GLint location , GLfloat v0 ) ;
2014-05-10 13:42:13 +00:00
typedef void ( APIENTRYP FTEPFNGLGETSHADERSOURCEARBPROC ) ( GLhandleARB obj , GLsizei maxLength , GLsizei * length , GLcharARB * source ) ;
2007-09-22 19:28:27 +00:00
typedef void ( APIENTRY * FTEPFNGLLOCKARRAYSEXTPROC ) ( GLint first , GLsizei count ) ;
typedef void ( APIENTRY * FTEPFNGLUNLOCKARRAYSEXTPROC ) ( void ) ;
2004-08-22 22:29:09 +00:00
2013-04-02 05:18:17 +00:00
# ifndef GL_STATIC
extern BINDTEXFUNCPTR qglBindTexture ;
2004-08-22 22:29:09 +00:00
extern DELTEXFUNCPTR delTexFunc ;
extern TEXSUBIMAGEPTR TexSubImage2DFunc ;
extern void ( APIENTRY * qglStencilOpSeparateATI ) ( GLenum face , GLenum fail , GLenum zfail , GLenum zpass ) ;
2013-04-02 05:18:17 +00:00
# endif
2007-09-22 19:28:27 +00:00
extern FTEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC qglCompressedTexImage2DARB ;
extern FTEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC qglGetCompressedTexImageARB ;
extern FTEPFNGLPNTRIANGLESIATIPROC qglPNTrianglesiATI ;
extern FTEPFNGLPNTRIANGLESFATIPROC qglPNTrianglesfATI ;
2014-11-05 05:39:24 +00:00
extern void ( APIENTRY * qglPatchParameteriARB ) ( GLenum pname , GLint value ) ; //core in gl4
2004-08-22 22:29:09 +00:00
2009-11-04 21:16:50 +00:00
qboolean GL_CheckExtension ( char * extname ) ;
2004-08-22 22:29:09 +00:00
2004-10-19 16:10:14 +00:00
typedef struct {
2010-11-22 02:03:28 +00:00
float glversion ;
2012-01-17 07:57:46 +00:00
int maxglslversion ;
2011-01-23 03:44:49 +00:00
qboolean nofixedfunc ;
qboolean gles ;
2014-08-25 07:35:41 +00:00
qboolean webgl_ie ; //workaround ie webgl bugs/omissions.
2004-10-19 16:10:14 +00:00
qboolean tex_env_combine ;
qboolean nv_tex_env_combine4 ;
qboolean env_add ;
qboolean sgis_generate_mipmap ;
qboolean arb_texture_env_combine ;
qboolean arb_texture_env_dot3 ;
qboolean arb_texture_cube_map ;
qboolean arb_texture_compression ;
2014-08-27 08:41:31 +00:00
2005-04-19 21:09:29 +00:00
// qboolean arb_fragment_program;
2005-01-04 23:34:42 +00:00
qboolean arb_shader_objects ;
2013-10-29 17:38:22 +00:00
qboolean arb_shadow ;
2014-08-27 08:41:31 +00:00
qboolean arb_depth_texture ;
2010-07-11 02:22:39 +00:00
qboolean ext_framebuffer_objects ;
2004-10-19 16:10:14 +00:00
qboolean ext_stencil_wrap ;
2012-11-29 13:37:48 +00:00
qboolean ext_packed_depth_stencil ;
2011-12-05 15:23:40 +00:00
qboolean arb_depth_clamp ;
2006-06-04 02:25:10 +00:00
int ext_texture_filter_anisotropic ;
2004-10-19 16:10:14 +00:00
} gl_config_t ;
extern gl_config_t gl_config ;
2004-08-22 22:29:09 +00:00
extern float gldepthmin , gldepthmax ;
2014-10-05 20:04:11 +00:00
void GL_UpdateFiltering ( image_t * imagelist , int filtermip [ 3 ] , int filterpic [ 3 ] , int mipcap [ 2 ] , float anis ) ;
qboolean GL_LoadTextureMips ( texid_t tex , struct pendingtextureinfo * mips ) ;
void GL_DestroyTexture ( texid_t tex ) ;
2010-07-11 02:22:39 +00:00
/*
2004-08-22 22:29:09 +00:00
typedef struct
{
float x , y , z ;
float s , t ;
float r , g , b ;
} glvert_t ;
2009-11-04 21:16:50 +00:00
FTE_DEPRECATED extern glvert_t glv ;
2010-07-11 02:22:39 +00:00
*/
2004-08-22 22:29:09 +00:00
# endif
// r_local.h -- private refresh defs
2009-11-04 21:16:50 +00:00
//#define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0)
2004-08-22 22:29:09 +00:00
// normalizing factor so player model works out to about
// 1 pixel per triangle
2009-11-04 21:16:50 +00:00
//#define MAX_LBM_HEIGHT 480
2004-08-22 22:29:09 +00:00
2009-11-04 21:16:50 +00:00
//#define TILE_SIZE 128 // size of textures generated by R_GenTiledSurf
2004-08-22 22:29:09 +00:00
2009-11-04 21:16:50 +00:00
//#define SKYSHIFT 7
//#define SKYSIZE (1 << SKYSHIFT)
//#define SKYMASK (SKYSIZE - 1)
2004-08-22 22:29:09 +00:00
# define BACKFACE_EPSILON 0.01
void R_TimeRefresh_f ( void ) ;
# include "particles.h"
//====================================================
extern entity_t r_worldentity ;
2009-11-07 13:29:15 +00:00
extern vec3_t r_entorigin ;
2004-08-22 22:29:09 +00:00
extern entity_t * currententity ;
extern int r_visframecount ; // ??? what difs?
2015-03-03 07:54:10 +00:00
extern int r_framecount ; //number of scenes drawn (specifically, number of times the world is frustum culled)
2004-08-22 22:29:09 +00:00
2011-10-27 16:16:29 +00:00
extern qboolean r_loadbumpmapping ;
2004-08-22 22:29:09 +00:00
//
// view origin
//
extern vec3_t vup ;
extern vec3_t vpn ;
extern vec3_t vright ;
extern vec3_t r_origin ;
//
// screen size info
//
extern refdef_t r_refdef ;
2012-02-12 05:18:31 +00:00
extern unsigned int r_viewcontents ;
2004-08-22 22:29:09 +00:00
extern mleaf_t * r_viewleaf , * r_oldviewleaf ;
extern mleaf_t * r_viewleaf2 , * r_oldviewleaf2 ;
extern int r_viewcluster , r_viewcluster2 , r_oldviewcluster , r_oldviewcluster2 ; //q2
extern texture_t * r_notexture_mip ;
extern int d_lightstylevalue [ 256 ] ; // 8.8 fraction of base light value
2009-11-04 21:16:50 +00:00
extern texid_t netgraphtexture ; // netgraph texture
2011-10-27 16:16:29 +00:00
extern shader_t * netgraphshader ;
2004-08-22 22:29:09 +00:00
extern const char * gl_vendor ;
extern const char * gl_renderer ;
extern const char * gl_version ;
2009-11-04 21:16:50 +00:00
FTE_DEPRECATED void PPL_RevertToKnownState ( void ) ;
2004-11-23 01:23:45 +00:00
2010-11-02 23:17:25 +00:00
qboolean R_CullBox ( vec3_t mins , vec3_t maxs ) ;
qboolean R_CullEntityBox ( entity_t * e , vec3_t modmins , vec3_t modmaxs ) ;
qboolean R_CullSphere ( vec3_t origin , float radius ) ;
2011-12-23 03:12:29 +00:00
void Sh_PreGenerateLights ( void ) ;
2012-05-09 15:30:53 +00:00
void Sh_PurgeShadowMeshes ( void ) ;
2010-11-02 23:17:25 +00:00
2009-11-04 21:16:50 +00:00
# ifdef GLQUAKE
2004-08-22 22:29:09 +00:00
void R_TranslatePlayerSkin ( int playernum ) ;
2012-04-24 07:59:11 +00:00
void GL_MTBind ( int tmu , int target , texid_t texnum ) ; /*use this if you're going to change the texture object (ensures glActiveTexture(tmu))*/
void GL_LazyBind ( int tmu , int target , texid_t texnum ) ; /*use this if you don't care about the active tmu, only that it is bound on that tmu (does not guarentee glActiveTexture) (ie: no glTexImage etc)*/
2009-11-04 21:16:50 +00:00
void GL_CullFace ( unsigned int sflags ) ;
void GL_TexEnv ( GLenum mode ) ;
2004-08-22 22:29:09 +00:00
// Multitexture
# define GL_TEXTURE0_SGIS 0x835E
# define GL_TEXTURE1_SGIS 0x835F
2011-12-05 15:23:40 +00:00
extern int gl_stencilbits ;
2004-08-22 22:29:09 +00:00
extern int gl_mtexarbable ; //max texture units
extern qboolean gl_mtexable ;
extern int mtexid0 ;
extern qboolean gl_mtexable ;
2009-11-04 21:16:50 +00:00
void GL_SelectTexture ( int tmunum ) ;
2005-10-07 02:13:15 +00:00
void GL_SetShaderState2D ( qboolean is2d ) ;
2010-03-14 14:35:56 +00:00
void GL_ForceDepthWritable ( void ) ;
2005-10-07 02:13:15 +00:00
2007-10-06 15:33:38 +00:00
# endif
2004-08-22 22:29:09 +00:00
2007-08-17 23:24:05 +00:00
//
// gl_backend.c
//
2009-11-04 21:16:50 +00:00
# ifdef GLQUAKE
void FTE_DEPRECATED R_IBrokeTheArrays ( void ) ;
2007-10-06 15:33:38 +00:00
# endif
2007-08-17 23:24:05 +00:00
2004-08-22 22:29:09 +00:00
//
// gl_draw.c
//
2009-11-04 21:16:50 +00:00
# ifdef GLQUAKE
2011-10-27 16:16:29 +00:00
texid_tf GL_LoadPicTexture ( qpic_t * pic ) ;
2012-01-17 07:57:46 +00:00
void GL_Set2D ( qboolean flipped ) ;
2007-10-06 15:33:38 +00:00
# endif
2004-08-22 22:29:09 +00:00
//
// gl_rmain.c
//
2010-07-11 02:22:39 +00:00
qboolean R_ShouldDraw ( entity_t * e ) ;
2009-11-07 13:29:15 +00:00
# ifdef GLQUAKE
2011-10-27 16:16:29 +00:00
void R_RotateForEntity ( float * modelmatrix , float * modelviewmatrix , const entity_t * e , const model_t * mod ) ;
2004-08-22 22:29:09 +00:00
2014-05-30 03:57:30 +00:00
void GL_ShutdownPostProcessing ( void ) ;
2005-01-12 22:15:50 +00:00
void GL_InitSceneProcessingShaders ( void ) ;
2005-01-17 18:06:45 +00:00
void GL_SetupSceneProcessingTextures ( void ) ;
2007-10-06 15:33:38 +00:00
# endif
2005-01-12 22:15:50 +00:00
2007-10-06 15:33:38 +00:00
//
// gl_alias.c
//
2004-08-22 22:29:09 +00:00
void R_DrawGAliasShadowVolume ( entity_t * e , vec3_t lightpos , float radius ) ;
2012-01-01 02:26:42 +00:00
# ifdef GLQUAKE
2004-08-22 22:29:09 +00:00
//misc model formats
void R_DrawHLModel ( entity_t * curent ) ;
//typedef float m3by3_t[3][3];
//int GetTag(model_t *mod, char *tagname, int frame, float **org, m3by3_t **ang);
2007-10-06 15:33:38 +00:00
# endif
2004-08-22 22:29:09 +00:00
//
// gl_rlight.c
//
2011-09-03 03:49:43 +00:00
void R_GenDlightBatches ( batch_t * batches [ ] ) ;
2011-10-27 16:16:29 +00:00
void R_InitFlashblends ( void ) ;
2009-11-04 21:16:50 +00:00
# ifdef GLQUAKE
2004-08-22 22:29:09 +00:00
void GLR_MarkQ2Lights ( dlight_t * light , int bit , mnode_t * node ) ;
2007-10-06 15:33:38 +00:00
# endif
2010-05-01 22:47:47 +00:00
void GLQ3_LightGrid ( model_t * mod , vec3_t point , vec3_t res_diffuse , vec3_t res_ambient , vec3_t res_dir ) ;
2012-01-01 02:26:42 +00:00
void R_ReloadRTLights_f ( void ) ;
void R_LoadRTLights ( void ) ;
void R_ImportRTLights ( char * entlump ) ;
void R_SaveRTLights_f ( void ) ;
2004-08-22 22:29:09 +00:00
2010-07-25 15:12:12 +00:00
//doom
# ifdef MAP_DOOM
void GLR_DoomWorld ( ) ;
# endif
2011-03-03 13:32:27 +00:00
# ifdef MAP_PROC
2011-02-25 04:22:14 +00:00
qboolean D3_LoadMap_CollisionMap ( model_t * mod , char * buf ) ;
unsigned char * D3_CalcVis ( model_t * mod , vec3_t org ) ;
void D3_GenerateAreas ( model_t * mod ) ;
2011-03-03 13:32:27 +00:00
# endif
2010-07-25 15:12:12 +00:00
2006-03-06 01:41:09 +00:00
//gl_bloom.c
2009-11-04 21:16:50 +00:00
# ifdef GLQUAKE
2006-03-06 01:41:09 +00:00
void R_BloomRegister ( void ) ;
2014-08-19 06:08:23 +00:00
qboolean R_CanBloom ( void ) ;
void R_BloomBlend ( texid_t source , int x , int y , int w , int h ) ;
2014-08-10 00:31:37 +00:00
void R_BloomShutdown ( void ) ;
2007-10-06 15:33:38 +00:00
# endif
2005-10-07 16:27:20 +00:00
2004-08-22 22:29:09 +00:00
//
// gl_ngraph.c
//
void R_NetGraph ( void ) ;
2009-11-04 21:16:50 +00:00
# if defined(GLQUAKE)
2004-08-22 22:29:09 +00:00
2013-11-21 23:02:28 +00:00
//updates the viewport correctly.
//pxrect.y is relative to the top.
//gl requires viewports specified relative to the bottom.
//so we need to do a little extra maths, which keeps confusing me, so one macro to ensure consistancy.
# define GL_ViewportUpdate() qglViewport(r_refdef.pxrect.x, r_refdef.pxrect.maxheight-(r_refdef.pxrect.y+r_refdef.pxrect.height), r_refdef.pxrect.width, r_refdef.pxrect.height)
2013-04-02 05:18:17 +00:00
# ifdef GL_STATIC
//these are the functions that are valid in gles2.
//other functions should never actually be used.
2013-08-07 14:20:24 +00:00
# define qglActiveTextureARB glActiveTexture
2013-04-02 05:18:17 +00:00
# define qglAttachShader glAttachShader
# define qglBindAttribLocation glBindAttribLocation
# define qglBindBuffer glBindBuffer
# define qglBindFramebuffer glBindFramebuffer
2013-08-07 14:20:24 +00:00
# define qglBindRenderbufferEXT glBindRenderbuffer
2013-04-02 05:18:17 +00:00
# define qglBindTexture glBindTexture
# define qglBlendColor glBlendColor
# define qglBlendEquation glBlendEquation
# define qglBlendEquationSeparate glBlendEquationSeparate
# define qglBlendFunc glBlendFunc
# define qglBlendFuncSeparate glBlendFuncSeparate
# define qglBufferData glBufferData
# define qglBufferSubData glBufferSubData
2013-08-07 14:20:24 +00:00
# define qglCheckFramebufferStatusEXT glCheckFramebufferStatus
2013-04-02 05:18:17 +00:00
# define qglClear glClear
# define qglClearColor glClearColor
# define qglClearDepthf glClearDepthf
# define qglClearStencil glClearStencil
# define qglColorMask glColorMask
# define qglCompileShader glCompileShader
# define qglCompressedTexImage2D glCompressedTexImage2D
# define qglCompressedTexSubImage2D glCompressedTexSubImage2D
# define qglCopyTexImage2D glCopyTexImage2D
# define qglCopyTexSubImage2D glCopyTexSubImage2D
# define qglCreateProgram glCreateProgram
# define qglCreateShader glCreateShader
# define qglCullFace glCullFace
# define qglDeleteBuffers glDeleteBuffers
# define qglDeleteFramebuffers glDeleteFramebuffers
# define qglDeleteProgram glDeleteProgram
# define qglDeleteRenderbuffers glDeleteRenderbuffers
# define qglDeleteShader glDeleteShader
# define qglDeleteTextures glDeleteTextures
# define qglDepthFunc glDepthFunc
# define qglDepthMask glDepthMask
# define qglDepthRangef glDepthRangef
# define qglDetachShader glDetachShader
# define qglDisable glDisable
# define qglDisableVertexAttribArray glDisableVertexAttribArray
# define qglDrawArrays glDrawArrays
# define qglDrawElements glDrawElements
# define qglEnable glEnable
# define qglEnableVertexAttribArray glEnableVertexAttribArray
# define qglFinish glFinish
# define qglFlush glFlush
2013-08-07 14:20:24 +00:00
# define qglFramebufferRenderbufferEXT glFramebufferRenderbuffer
2013-04-02 05:18:17 +00:00
# define qglFramebufferTexture2D glFramebufferTexture2D
# define qglFrontFace glFrontFace
# define qglGenBuffers glGenBuffers
# define qglGenerateMipmap glGenerateMipmap
# define qglGenFramebuffers glGenFramebuffers
2013-08-07 14:20:24 +00:00
# define qglGenRenderbuffersEXT glGenRenderbuffers
2013-04-02 05:18:17 +00:00
# define qglGenTextures glGenTextures
# define qglGetActiveAttrib glGetActiveAttrib
# define qglGetActiveUniform glGetActiveUniform
# define qglGetAttachedShaders glGetAttachedShaders
# define qglGetAttribLocation glGetAttribLocation
# define qglGetBooleanv glGetBooleanv
# define qglGetBufferParameteriv glGetBufferParameteriv
# define qglGetError glGetError
# define qglGetFloatv glGetFloatv
# define qglGetFramebufferAttachmentParameteriv glGetFramebufferAttachmentParameteriv
# define qglGetIntegerv glGetIntegerv
# define qglGetProgramiv glGetProgramiv
# define qglGetProgramInfoLog glGetProgramInfoLog
# define qglGetRenderbufferParameteriv glGetRenderbufferParameteriv
# define qglGetShaderiv glGetShaderiv
# define qglGetShaderInfoLog glGetShaderInfoLog
# define qglGetShaderPrecisionFormat glGetShaderPrecisionFormat
# define qglGetShaderSource glGetShaderSource
# define qglGetString glGetString
# define qglGetTexParameterfv glGetTexParameterfv
# define qglGetTexParameteriv glGetTexParameteriv
# define qglGetUniformfv glGetUniformfv
# define qglGetUniformiv glGetUniformiv
# define qglGetUniformLocation glGetUniformLocation
# define qglGetVertexAttribfv glGetVertexAttribfv
# define qglGetVertexAttribiv glGetVertexAttribiv
# define qglGetVertexAttribPointerv glGetVertexAttribPointerv
# define qglHint glHint
# define qglIsBuffer glIsBuffer
# define qglIsEnabled glIsEnabled
# define qglIsFramebuffer glIsFramebuffer
# define qglIsProgram glIsProgram
# define qglIsRenderbuffer glIsRenderbuffer
# define qglIsShader glIsShader
# define qglIsTexture glIsTexture
# define qglLineWidth glLineWidth
# define qglLinkProgram glLinkProgram
# define qglPixelStorei glPixelStorei
# define qglPolygonOffset glPolygonOffset
# define qglReadPixels glReadPixels
# define qglReleaseShaderCompiler glReleaseShaderCompiler
2013-08-07 14:20:24 +00:00
# define qglRenderbufferStorageEXT glRenderbufferStorage
2013-04-02 05:18:17 +00:00
# define qglSampleCoverage glSampleCoverage
# define qglScissor glScissor
# define qglShaderBinary glShaderBinary
# define qglShaderSource glShaderSource
# define qglStencilFunc glStencilFunc
# define qglStencilFuncSeparate glStencilFuncSeparate
# define qglStencilMask glStencilMask
# define qglStencilMaskSeparate glStencilMaskSeparate
# define qglStencilOp glStencilOp
# define qglStencilOpSeparate glStencilOpSeparate
# define qglTexImage2D glTexImage2D
# define qglTexParameterf glTexParameterf
# define qglTexParameterfv glTexParameterfv
# define qglTexParameteri glTexParameteri
# define qglTexParameteriv glTexParameteriv
# define qglTexSubImage2D glTexSubImage2D
# define qglUniform1f glUniform1f
# define qglUniform1fv glUniform1fv
# define qglUniform1i glUniform1i
# define qglUniform1iv glUniform1iv
# define qglUniform2f glUniform2f
# define qglUniform2fv glUniform2fv
# define qglUniform2i glUniform2i
# define qglUniform2iv glUniform2iv
# define qglUniform3f glUniform3f
# define qglUniform3fv glUniform3fv
# define qglUniform3i glUniform3i
# define qglUniform3iv glUniform3iv
# define qglUniform4f glUniform4f
# define qglUniform4fv glUniform4fv
# define qglUniform4i glUniform4i
# define qglUniform4iv glUniform4iv
# define qglUniformMatrix2fv glUniformMatrix2fv
# define qglUniformMatrix3fv glUniformMatrix3fv
# define qglUniformMatrix4fv glUniformMatrix4fv
# define qglUseProgram glUseProgram
# define qglValidateProgram glValidateProgram
# define qglVertexAttrib1f glVertexAttrib1f
# define qglVertexAttrib1fv glVertexAttrib1fv
# define qglVertexAttrib2f glVertexAttrib2f
# define qglVertexAttrib2fv glVertexAttrib2fv
# define qglVertexAttrib3f glVertexAttrib3f
# define qglVertexAttrib3fv glVertexAttrib3fv
# define qglVertexAttrib4f glVertexAttrib4f
# define qglVertexAttrib4fv glVertexAttrib4fv
# define qglVertexAttribPointer glVertexAttribPointer
# define qglViewport glViewport
# define qglStencilOpSeparateATI qglStencilOpSeparate
# define qglGenFramebuffersEXT qglGenFramebuffers
2013-04-13 13:13:15 +00:00
# define qglDeleteFramebuffersEXT qglDeleteFramebuffers
2013-04-02 05:18:17 +00:00
# define qglBindFramebufferEXT qglBindFramebuffer
# define qglFramebufferTexture2DEXT qglFramebufferTexture2D
# define qglDeleteRenderbuffersEXT qglDeleteRenderbuffers
//#define qglCompressedTexImage2DARB qglCompressedTexImage2D
2013-04-04 08:08:49 +00:00
# define qglCreateProgramObjectARB glCreateProgram
# define qglDeleteProgramObject_ glDeleteProgram
# define qglDeleteShaderObject_ glDeleteShader
# define qglUseProgramObjectARB glUseProgram
# define qglCreateShaderObjectARB glCreateShader
# define qglShaderSourceARB glShaderSource
# define qglCompileShaderARB glCompileShader
# define qglGetProgramParameteriv_ glGetProgramiv
# define qglGetShaderParameteriv_ glGetShaderiv
# define qglAttachObjectARB glAttachShader
# define qglGetProgramInfoLog_ glGetProgramInfoLog
# define qglGetShaderInfoLog_ glGetShaderInfoLog
# define qglLinkProgramARB glLinkProgram
# define qglBindAttribLocationARB glBindAttribLocation
# define qglGetAttribLocationARB glGetAttribLocation
# define qglGetUniformLocationARB glGetUniformLocation
# define qglUniformMatrix4fvARB glUniformMatrix4fv
# define qglUniform4fARB glUniform4f
# define qglUniform4fvARB glUniform4fv
# define qglUniform3fARB glUniform3f
# define qglUniform3fvARB glUniform3fv
# define qglUniform2fvARB glUniform2fv
# define qglUniform1iARB glUniform1i
# define qglUniform1fARB glUniform1f
2013-08-07 14:20:24 +00:00
# define qglGenBuffersARB glGenBuffers
# define qglDeleteBuffersARB glDeleteBuffers
# define qglBindBufferARB glBindBuffer
# define qglBufferDataARB glBufferData
# define qglBufferSubDataARB glBufferSubData
# define qglMapBufferARB glMapBuffer
# define qglUnmapBufferARB glUnmapBuffer
2013-04-02 05:18:17 +00:00
# else
extern void ( APIENTRY * qglBindTexture ) ( GLenum target , GLuint texture ) ;
extern void ( APIENTRY * qglBlendFunc ) ( GLenum sfactor , GLenum dfactor ) ;
extern void ( APIENTRY * qglClear ) ( GLbitfield mask ) ;
extern void ( APIENTRY * qglClearColor ) ( GLclampf red , GLclampf green , GLclampf blue , GLclampf alpha ) ;
extern void ( APIENTRY * qglClearDepthf ) ( GLclampf depth ) ;
extern void ( APIENTRY * qglClearStencil ) ( GLint s ) ;
extern void ( APIENTRY * qglColorMask ) ( GLboolean red , GLboolean green , GLboolean blue , GLboolean alpha ) ;
extern void ( APIENTRY * qglCopyTexImage2D ) ( GLenum target , GLint level , GLenum internalFormat , GLint x , GLint y , GLsizei width , GLsizei height , GLint border ) ;
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 * qglDeleteTextures ) ( GLsizei n , const GLuint * textures ) ;
extern void ( APIENTRY * qglDepthFunc ) ( GLenum func ) ;
extern void ( APIENTRY * qglDepthMask ) ( GLboolean flag ) ;
extern void ( APIENTRY * qglDepthRangef ) ( GLclampf zNear , GLclampf zFar ) ;
extern void ( APIENTRY * qglDisable ) ( GLenum cap ) ;
extern void ( APIENTRY * qglDrawArrays ) ( GLenum mode , GLint first , GLsizei count ) ;
extern void ( APIENTRY * qglDrawElements ) ( GLenum mode , GLsizei count , GLenum type , const GLvoid * indices ) ;
extern void ( APIENTRY * qglEnable ) ( GLenum cap ) ;
extern void ( APIENTRY * qglFinish ) ( void ) ;
extern void ( APIENTRY * qglFlush ) ( void ) ;
extern void ( APIENTRY * qglFrontFace ) ( GLenum mode ) ;
extern void ( APIENTRY * qglGenTextures ) ( GLsizei n , GLuint * textures ) ;
extern void ( APIENTRY * qglGetBooleanv ) ( GLenum pname , GLboolean * params ) ;
extern GLenum ( APIENTRY * qglGetError ) ( void ) ;
extern void ( APIENTRY * qglGetFloatv ) ( GLenum pname , GLfloat * params ) ;
extern void ( APIENTRY * qglGetIntegerv ) ( GLenum pname , GLint * params ) ;
extern const GLubyte * ( APIENTRY * qglGetString ) ( GLenum name ) ;
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 GLboolean ( APIENTRY * qglIsEnabled ) ( GLenum cap ) ;
extern GLboolean ( APIENTRY * qglIsTexture ) ( GLuint texture ) ;
extern void ( APIENTRY * qglLineWidth ) ( GLfloat width ) ;
extern void ( APIENTRY * qglPixelStorei ) ( GLenum pname , GLint param ) ;
extern void ( APIENTRY * qglPolygonOffset ) ( GLfloat factor , GLfloat units ) ;
extern void ( APIENTRY * qglReadPixels ) ( GLint x , GLint y , GLsizei width , GLsizei height , GLenum format , GLenum type , GLvoid * pixels ) ;
extern void ( APIENTRY * qglScissor ) ( GLint x , GLint y , GLsizei width , GLsizei height ) ;
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 * 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 * qglTexSubImage2D ) ( GLenum target , GLint level , GLint xoffset , GLint yoffset , GLsizei width , GLsizei height , GLenum format , GLenum type , const GLvoid * pixels ) ;
extern void ( APIENTRY * qglViewport ) ( GLint x , GLint y , GLsizei width , GLsizei height ) ;
extern void ( APIENTRY * qglGenFramebuffersEXT ) ( GLsizei n , GLuint * ids ) ;
extern void ( APIENTRY * qglDeleteFramebuffersEXT ) ( GLsizei n , const GLuint * ids ) ;
extern void ( APIENTRY * qglBindFramebufferEXT ) ( GLenum target , GLuint id ) ;
extern void ( APIENTRY * qglGenRenderbuffersEXT ) ( GLsizei n , GLuint * ids ) ;
extern void ( APIENTRY * qglDeleteRenderbuffersEXT ) ( GLsizei n , const GLuint * ids ) ;
extern void ( APIENTRY * qglBindRenderbufferEXT ) ( GLenum target , GLuint id ) ;
extern void ( APIENTRY * qglRenderbufferStorageEXT ) ( GLenum target , GLenum internalFormat , GLsizei width , GLsizei height ) ;
extern void ( APIENTRY * qglFramebufferTexture2DEXT ) ( GLenum target , GLenum attachmentPoint , GLenum textureTarget , GLuint textureId , GLint level ) ;
extern void ( APIENTRY * qglFramebufferRenderbufferEXT ) ( GLenum target , GLenum attachmentPoint , GLenum textureTarget , GLuint textureId ) ;
extern GLenum ( APIENTRY * qglCheckFramebufferStatusEXT ) ( GLenum target ) ;
2013-05-03 04:28:08 +00:00
extern void ( APIENTRY * qglGetFramebufferAttachmentParameteriv ) ( GLenum target , GLenum attachment , GLenum pname , GLint * params ) ;
2013-04-02 05:18:17 +00:00
2013-04-04 08:08:49 +00:00
//glslang - arb_shader_objects
extern FTEPFNGLCREATEPROGRAMOBJECTARBPROC qglCreateProgramObjectARB ;
extern FTEPFNGLDELETEOBJECTARBPROC qglDeleteProgramObject_ ;
extern FTEPFNGLDELETEOBJECTARBPROC qglDeleteShaderObject_ ;
extern FTEPFNGLUSEPROGRAMOBJECTARBPROC qglUseProgramObjectARB ;
extern FTEPFNGLCREATESHADEROBJECTARBPROC qglCreateShaderObjectARB ;
extern FTEPFNGLSHADERSOURCEARBPROC qglShaderSourceARB ;
extern FTEPFNGLCOMPILESHADERARBPROC qglCompileShaderARB ;
extern FTEPFNGLGETOBJECTPARAMETERIVARBPROC qglGetProgramParameteriv_ ;
extern FTEPFNGLGETOBJECTPARAMETERIVARBPROC qglGetShaderParameteriv_ ;
extern FTEPFNGLATTACHOBJECTARBPROC qglAttachObjectARB ;
extern FTEPFNGLGETINFOLOGARBPROC qglGetProgramInfoLog_ ;
extern FTEPFNGLGETINFOLOGARBPROC qglGetShaderInfoLog_ ;
extern FTEPFNGLLINKPROGRAMARBPROC qglLinkProgramARB ;
extern FTEPFNGLBINDATTRIBLOCATIONARBPROC qglBindAttribLocationARB ;
extern FTEPFNGLGETATTRIBLOCATIONARBPROC qglGetAttribLocationARB ;
extern FTEPFNGLGETUNIFORMLOCATIONARBPROC qglGetUniformLocationARB ;
extern FTEPFNGLUNIFORMMATRIXPROC qglUniformMatrix4fvARB ;
extern FTEPFNGLUNIFORM4FARBPROC qglUniform4fARB ;
extern FTEPFNGLUNIFORM4FVARBPROC qglUniform4fvARB ;
extern FTEPFNGLUNIFORM3FARBPROC qglUniform3fARB ;
extern FTEPFNGLUNIFORM3FVARBPROC qglUniform3fvARB ;
extern FTEPFNGLUNIFORM2FVARBPROC qglUniform2fvARB ;
extern FTEPFNGLUNIFORM1IARBPROC qglUniform1iARB ;
extern FTEPFNGLUNIFORM1FARBPROC qglUniform1fARB ;
2013-04-02 05:18:17 +00:00
extern FTEPFNGLVERTEXATTRIBPOINTER qglVertexAttribPointer ;
extern FTEPFNGLGETVERTEXATTRIBIV qglGetVertexAttribiv ;
extern FTEPFNGLENABLEVERTEXATTRIBARRAY qglEnableVertexAttribArray ;
extern FTEPFNGLDISABLEVERTEXATTRIBARRAY qglDisableVertexAttribArray ;
2013-08-07 14:20:24 +00:00
extern void ( APIENTRY * qglGenBuffersARB ) ( GLsizei n , GLuint * ids ) ;
extern void ( APIENTRY * qglDeleteBuffersARB ) ( GLsizei n , GLuint * ids ) ;
extern void ( APIENTRY * qglBindBufferARB ) ( GLenum target , GLuint id ) ;
extern void ( APIENTRY * qglBufferDataARB ) ( GLenum target , GLsizei size , const void * data , GLenum usage ) ;
extern void ( APIENTRY * qglBufferSubDataARB ) ( GLenum target , GLint offset , GLsizei size , void * data ) ;
extern void * ( APIENTRY * qglMapBufferARB ) ( GLenum target , GLenum access ) ;
extern GLboolean ( APIENTRY * qglUnmapBufferARB ) ( GLenum target ) ;
2013-04-02 05:18:17 +00:00
# endif
2014-08-27 08:41:31 +00:00
extern void ( APIENTRY * qglDrawBuffers ) ( GLsizei n , GLsizei * ids ) ; //gl2
2013-04-02 05:18:17 +00:00
2014-10-22 19:41:20 +00:00
extern GLenum ( APIENTRY * qglGetGraphicsResetStatus ) ( void ) ;
2013-04-02 05:18:17 +00:00
//non-gles2 gl functions
2004-08-22 22:29:09 +00:00
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 * qglBitmap ) ( GLsizei width , GLsizei height , GLfloat xorig , GLfloat yorig , GLfloat xmove , GLfloat ymove , const GLubyte * bitmap ) ;
extern void ( APIENTRY * qglCallList ) ( GLuint list ) ;
extern void ( APIENTRY * qglCallLists ) ( GLsizei n , GLenum type , const GLvoid * lists ) ;
extern void ( APIENTRY * qglClearAccum ) ( GLfloat red , GLfloat green , GLfloat blue , GLfloat alpha ) ;
extern void ( APIENTRY * qglClearDepth ) ( GLclampd depth ) ;
extern void ( APIENTRY * qglClearIndex ) ( GLfloat c ) ;
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 * 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 * qglCopyTexSubImage1D ) ( GLenum target , GLint level , GLint xoffset , GLint x , GLint y , GLsizei width ) ;
extern void ( APIENTRY * qglDeleteLists ) ( GLuint list , GLsizei range ) ;
extern void ( APIENTRY * qglDepthRange ) ( GLclampd zNear , GLclampd zFar ) ;
extern void ( APIENTRY * qglDisableClientState ) ( GLenum array ) ;
extern void ( APIENTRY * qglDrawBuffer ) ( GLenum mode ) ;
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 * 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 * 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 * qglFrustum ) ( GLdouble left , GLdouble right , GLdouble bottom , GLdouble top , GLdouble zNear , GLdouble zFar ) ;
extern GLuint ( APIENTRY * qglGenLists ) ( GLsizei range ) ;
extern void ( APIENTRY * qglGetClipPlane ) ( GLenum plane , GLdouble * equation ) ;
extern void ( APIENTRY * qglGetDoublev ) ( GLenum pname , GLdouble * 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 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 * 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 * qglIsList ) ( GLuint list ) ;
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 * 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 * 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 * 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 * 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 * qglSelectBuffer ) ( GLsizei size , GLuint * buffer ) ;
extern void ( APIENTRY * qglShadeModel ) ( GLenum mode ) ;
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 ) ;
2011-12-23 03:12:29 +00:00
extern void ( APIENTRY * qglTexImage3D ) ( GLenum target , GLint level , GLint internalformat , GLsizei width , GLsizei height , GLsizei depth , GLint border , GLenum format , GLenum type , const GLvoid * pixels ) ;
2004-08-22 22:29:09 +00:00
extern void ( APIENTRY * qglTexSubImage1D ) ( GLenum target , GLint level , GLint xoffset , GLsizei width , 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 ) ;
2013-04-04 08:08:49 +00:00
extern FTEPFNGLUNIFORMMATRIXPROC qglUniformMatrix4x3fv ;
extern FTEPFNGLUNIFORMMATRIXPROC qglUniformMatrix3x4fv ;
2004-08-22 22:29:09 +00:00
# ifdef _WIN32
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 * qSwapBuffers ) ( HDC ) ;
# endif
2009-11-04 21:16:50 +00:00
extern const GLubyte * ( APIENTRY * qglGetStringi ) ( GLenum name , GLuint index ) ;
2009-06-21 17:45:33 +00:00
2005-04-19 21:09:29 +00:00
/*
2004-09-13 03:20:04 +00:00
extern qboolean gl_arb_fragment_program ;
extern PFNGLPROGRAMSTRINGARBPROC qglProgramStringARB ;
extern PFNGLGETPROGRAMIVARBPROC qglGetProgramivARB ;
extern PFNGLBINDPROGRAMARBPROC qglBindProgramARB ;
extern PFNGLGENPROGRAMSARBPROC qglGenProgramsARB ;
2005-04-19 21:09:29 +00:00
*/
2004-09-13 03:20:04 +00:00
2013-04-02 05:18:17 +00:00
extern FTEPFNGLLOCKARRAYSEXTPROC qglLockArraysEXT ;
extern FTEPFNGLUNLOCKARRAYSEXTPROC qglUnlockArraysEXT ;
typedef void ( APIENTRY * lpMTexFUNC ) ( GLenum en , GLfloat f1 , GLfloat f2 ) ;
typedef void ( APIENTRY * lpSelTexFUNC ) ( GLenum en ) ;
extern lpMTexFUNC qglMTexCoord2fSGIS ;
extern lpSelTexFUNC qglSelectTextureSGIS ;
//these functions are not available in gles2, for one reason or another
extern void ( APIENTRY * qglBegin ) ( GLenum mode ) ;
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 * qglEnd ) ( void ) ;
extern void ( APIENTRY * qglReadBuffer ) ( GLenum mode ) ;
//misc extensions
extern FTEPFNGLACTIVESTENCILFACEEXTPROC qglActiveStencilFaceEXT ;
extern void ( APIENTRY * qglDepthBoundsEXT ) ( GLclampd zmin , GLclampd zmax ) ;
extern void ( APIENTRY * qglDrawRangeElements ) ( GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid * ) ;
extern void ( APIENTRY * qglEnableClientState ) ( GLenum array ) ;
extern void ( APIENTRY * qglVertexPointer ) ( GLint size , GLenum type , GLsizei stride , const GLvoid * pointer ) ;
extern void ( APIENTRY * qglGenVertexArrays ) ( GLsizei n , GLuint * arrays ) ;
extern void ( APIENTRY * qglBindVertexArray ) ( GLuint vaoarray ) ;
2005-01-04 23:34:42 +00:00
//glslang helper api
2014-11-05 05:39:24 +00:00
union programhandle_u GLSlang_CreateProgram ( const char * name , int ver , const char * * precompilerconstants , const char * vert , const char * cont , const char * eval , const char * frag , qboolean silent , vfsfile_t * blobfile ) ;
2005-01-04 23:34:42 +00:00
GLint GLSlang_GetUniformLocation ( int prog , char * name ) ;
2011-01-23 03:44:49 +00:00
void GL_SelectProgram ( int program ) ;
# define GLSlang_UseProgram(prog) GL_SelectProgram(prog)
# define GLSlang_SetUniform1i(uni, parm0) qglUniform1iARB(uni, parm0)
# define GLSlang_SetUniform1f(uni, parm0) qglUniform1fARB(uni, parm0)
# ifdef _DEBUG
2012-04-09 19:12:12 +00:00
# ifdef __GNUC__
# define checkglerror() do {int i=qglGetError(); if (i) Sys_Printf("GL Error %i detected at line %s:%i (caller %p)\n", i, __FILE__, __LINE__, __builtin_return_address(0));}while(0)
# else
2011-01-23 03:44:49 +00:00
# define checkglerror() do {int i=qglGetError(); if (i) Con_Printf("GL Error %i detected at line %s:%i\n", i, __FILE__, __LINE__);}while(0)
2012-04-09 19:12:12 +00:00
# endif
2011-01-23 03:44:49 +00:00
# else
# define checkglerror()
# endif
2005-01-04 23:34:42 +00:00
2012-04-24 07:59:11 +00:00
2004-10-19 16:10:14 +00:00
2004-08-22 22:29:09 +00:00
void GL_Init ( void * ( * getglfunction ) ( char * name ) ) ;
# endif
2007-09-22 19:28:27 +00:00
qbyte GetPaletteIndex ( int red , int green , int blue ) ;
2004-08-22 22:29:09 +00:00
int Mod_ReadFlagsFromMD1 ( char * name , int md3version ) ;
2009-07-05 18:45:53 +00:00
/*
//opengl 3 deprecation
. Application - generated object names - the names of all object types , such as
buffer , query , and texture objects , must be generated using the corresponding
Gen * commands . Trying to bind an object name not returned by a Gen *
command will result in an INVALID OPERATION error . This behavior is
already the case for framebuffer , renderbuffer , and vertex array objects . Object
types which have default objects ( objects named zero ) , such as vertex
array , framebuffer , and texture objects , may also bind the default object , even
though it is not returned by Gen * .
. OpenGL Shading Language versions 1.10 and 1.20 . These versions of the
shading language depend on many API features that have also been deprecated .
. Pixel transfer modes and operations - all pixel transfer modes , including
pixel maps , shift and bias , color table lookup , color matrix , and convolution
commands and state , and all associated state and commands defining
that state .
. Legacy OpenGL 1.0 pixel formats - the values 1 , 2 , 3 , and 4 are no longer
accepted as internal formats by TexImage * or any other command taking
an internal format argument . The initial internal format of a texel array is
RGBA instead of 1.
. Texture borders - the border value to TexImage * must always be zero , or
an INVALID VALUE error is generated ( section 3.8 .1 ) ; all language in section
3.8 referring to nonzero border widths during texture image specification
and texture sampling ; and all associated state .
GL_COLOR_INDEX
glBegin
glEnd
glEdgeFlag * ;
glColor * ,
glFogCoord *
glIndex *
glNormal3 *
glSecondaryColor3 *
glTexCoord *
glVertex *
glColorPointer
glEdgeFlagPointer
glFogCoordPointer
glIndexPointer
glNormalPointer
glSecondary -
glColorPointer ,
glTexCoordPointer
glVertexPointer
glEnableClientState
glDisableClientState ,
glInterleavedArrays
glClientActiveTexture
glFrustum ,
glLoadIdentity
glLoadMatrix
glLoadTransposeMatrix
glMatrixMode ,
glMultMatrix
glMultTransposeMatrix
glOrtho
glPopMatrix
glPushMatrix ,
glRotate
glScale
glTranslate
GL_RESCALE_NORMAL
GL_NORMALIZE
glTexGen *
GL_TEXTURE_GEN_ * ,
Material *
glLight *
glLightModel *
glColorMaterial
glShadeModel
GL_LIGHTING
GL_VERTEX_PROGRAM_TWO_SIDE
GL_LIGHTi ,
GL_COLOR_MATERIAL
glClipPlane
GL_CLAMP_VERTEX_COLOR
GL_CLAMP_FRAGMENT_COLOR
glRect *
glRasterPos *
glWindowPos *
GL_POINT_SMOOTH
GL_POINT_SPRITE
glLineStipple
GL_LINE_STIPPLE
GL_POLYGON
GL_QUADS
GL_QUAD_STRIP
glPolygonMode
glPolygonStipple
GL_POLYGON_STIPPLE
glDrawPixels
glPixelZoom
glBitmap
GL_BITMAP
GL_TEXTURE_COMPONENTS
GL_ALPHA
GL_LUMINANCE
GL_LUMINANCE_ALPHA
GL_INTENSITY
GL_DEPTH_TEXTURE_MODE
GL_CLAMP
GL_GENERATE_MIPMAP
glAreTexturesResident
glPrioritizeTextures ,
GL_TEXTURE_PRIORITY
GL_TEXTURE_ENV
GL_TEXTURE_FILTER_CONTROL
GL_TEXTURE_LOD_BIAS
GL_TEXTURE_1D
GL_TEXTURE_2D ,
GL_TEXTURE_3D
GL_TEXTURE_1D_ARRAY
GL_TEXTURE_2D_ARRAY
GL_TEXTURE_CUBE_MAP
GL_COLOR_SUM
GL_FOG
glFog
GL_MAX_TEXTURE_UNITS
GL_MAX_TEXTURE_COORDS
glAlphaFunc
GL_ALPHA_TEST
glClearAccum
GL_ACCUM_BUFFER_BIT
glCopyPixels
GL_AUX0
GL_RED_BITS
GL_GREEN_BITS
GL_BLUE_BITS
GL_ALPHA_BITS
GL_DEPTH_BITS
STENCIL BITS
glMap *
glEvalCoord *
glMapGrid *
glEvalMesh *
glEvalPoint *
glRenderMode
glInitNames
glPopName
glPushName
glLoadName
glSelectBuffer
glFeedbackBuffer
glPassThrough
glNewList
glEndList
glCallList
glCallLists
glListBase
glGenLists ,
glIsList
glDeleteLists
GL_PERSPECTIVE_CORRECTION_HINT
GL_POINT_SMOOTH_HINT ,
GL_FOG_HINT
GL_GENERATE_MIPMAP_HINT
glPushAttrib
glPushClientAttrib
glPopAttrib
glPopClientAttrib ,
GL_MAX_ATTRIB_STACK_DEPTH ,
GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
GL_ATTRIB_STACK_DEPTH
GL_CLIENT_ATTRIB_STACK_DEPTH
GL_ALL_ATTRIB_BITS
GL_CLIENT_ALL_ATTRIB_BITS .
GL_EXTENSIONS
*/
2007-10-12 13:23:46 +00:00
# endif