]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - glquake.h
now supports GL_EXT_stencil_two_side extension (found on NV30/R300 class cards),...
[xonotic/darkplaces.git] / glquake.h
index 96a71247db16c656f24b32b4c744cdd565b3ba43..96762ea96c34e0c32ba4dd11d90403e0a862cf7d 100644 (file)
--- a/glquake.h
+++ b/glquake.h
@@ -26,16 +26,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #ifdef _MSC_VER
 #pragma warning(disable : 4244)     // LordHavoc: MSVC++ 4 x86, double/float
 #pragma warning(disable : 4305)                // LordHavoc: MSVC++ 6 x86, double/float
-#pragma warning(disable : 4018)                // LordHavoc: MSVC++ 4 x86, signed/unsigned mismatch
 #endif
 
-#ifdef _WIN32
-#include <windows.h>
-#define strcasecmp stricmp
-#define strncasecmp strnicmp
-#endif
-
-//#include <GL/gl.h>
 
 //====================================================
 
@@ -113,9 +105,13 @@ typedef double GLclampd;
 #define GL_TEXTURE_2D                          0x0DE1
 #define GL_TEXTURE_WRAP_S                      0x2802
 #define GL_TEXTURE_WRAP_T                      0x2803
+#define GL_TEXTURE_WRAP_R                      0x8072
+#define GL_TEXTURE_BORDER_COLOR                        0x1004
 #define GL_TEXTURE_MAG_FILTER                  0x2800
 #define GL_TEXTURE_MIN_FILTER                  0x2801
 #define GL_UNPACK_ALIGNMENT                    0x0CF5
+#define GL_TEXTURE_BINDING_1D                   0x8068
+#define GL_TEXTURE_BINDING_2D                   0x8069
 
 #define GL_NEAREST                             0x2600
 #define GL_LINEAR                              0x2601
@@ -124,13 +120,27 @@ typedef double GLclampd;
 #define GL_LINEAR_MIPMAP_NEAREST               0x2701
 #define GL_LINEAR_MIPMAP_LINEAR                        0x2703
 
+extern int gl_support_anisotropy;
+#define GL_TEXTURE_MAX_ANISOTROPY_EXT          0x84FE
+#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT      0x84FF
+
+#define GL_ADD                                 0x0104
 #define GL_DECAL                               0x2101
 #define GL_MODULATE                            0x2100
 
 #define GL_REPEAT                              0x2901
 #define GL_CLAMP                               0x2900
 
-#define GL_TRIANGLES                           0x0004
+#define GL_POINTS                              0x0000
+#define GL_LINES                               0x0001
+#define GL_LINE_LOOP                   0x0002
+#define GL_LINE_STRIP                  0x0003
+#define GL_TRIANGLES                   0x0004
+#define GL_TRIANGLE_STRIP              0x0005
+#define GL_TRIANGLE_FAN                        0x0006
+#define GL_QUADS                               0x0007
+#define GL_QUAD_STRIP                  0x0008
+#define GL_POLYGON                             0x0009
 
 #define GL_FALSE                               0x0
 #define GL_TRUE                                        0x1
@@ -201,11 +211,18 @@ typedef double GLclampd;
 #define GL_REPLACE                             0x1E01
 #define GL_INCR                                        0x1E02
 #define GL_DECR                                        0x1E03
+
+#define GL_POLYGON_OFFSET_FACTOR          0x8038
+#define GL_POLYGON_OFFSET_UNITS           0x2A00
+#define GL_POLYGON_OFFSET_POINT           0x2A01
+#define GL_POLYGON_OFFSET_LINE            0x2A02
+#define GL_POLYGON_OFFSET_FILL            0x8037
 #endif
 
 // GL_ARB_multitexture
 extern int gl_textureunits;
 extern void (GLAPIENTRY *qglMultiTexCoord2f) (GLenum, GLfloat, GLfloat);
+extern void (GLAPIENTRY *qglMultiTexCoord3f) (GLenum, GLfloat, GLfloat, GLfloat);
 extern void (GLAPIENTRY *qglActiveTexture) (GLenum);
 extern void (GLAPIENTRY *qglClientActiveTexture) (GLenum);
 #ifndef GL_ACTIVE_TEXTURE_ARB
@@ -287,21 +304,32 @@ extern int gl_combine_extension;
 
 extern cvar_t gl_combine;
 
+extern int gl_textureshader;
+#ifndef GL_TEXTURE_SHADER_NV
+#define GL_TEXTURE_SHADER_NV                   0x86DE
+#define GL_SHADER_OPERATION_NV                 0x86DF
+#define GL_OFFSET_TEXTURE_MATRIX_NV            0x86E1
+#define GL_PREVIOUS_TEXTURE_INPUT_NV   0x86E4
+#define GL_OFFSET_TEXTURE_2D_NV                        0x86E8
+#define GL_DSDT_NV                                             0x86F5
+#define GL_DSDT8_NV                                            0x8709
+#endif
+
 extern int gl_texture3d;
-#ifndef GL_TEXTURE_3D_EXT
-#define GL_PACK_SKIP_IMAGES_EXT                        0x806B
-#define GL_PACK_IMAGE_HEIGHT_EXT               0x806C
-#define GL_UNPACK_SKIP_IMAGES_EXT              0x806D
-#define GL_UNPACK_IMAGE_HEIGHT_EXT             0x806E
-#define GL_TEXTURE_3D_EXT                      0x806F
-#define GL_PROXY_TEXTURE_3D_EXT                        0x8070
-#define GL_TEXTURE_DEPTH_EXT                   0x8071
-#define GL_TEXTURE_WRAP_R_EXT                  0x8072
-#define GL_MAX_3D_TEXTURE_SIZE_EXT             0x8073
-#define GL_TEXTURE_3D_BINDING_EXT              0x806A
-extern void (GLAPIENTRY *qglTexImage3DEXT)(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-extern void (GLAPIENTRY *qglTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
-extern void (GLAPIENTRY *qglCopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+#ifndef GL_TEXTURE_3D
+#define GL_PACK_SKIP_IMAGES                    0x806B
+#define GL_PACK_IMAGE_HEIGHT                   0x806C
+#define GL_UNPACK_SKIP_IMAGES                  0x806D
+#define GL_UNPACK_IMAGE_HEIGHT                 0x806E
+#define GL_TEXTURE_3D                          0x806F
+#define GL_PROXY_TEXTURE_3D                    0x8070
+#define GL_TEXTURE_DEPTH                       0x8071
+#define GL_TEXTURE_WRAP_R                      0x8072
+#define GL_MAX_3D_TEXTURE_SIZE                 0x8073
+#define GL_TEXTURE_BINDING_3D                  0x806A
+extern void (GLAPIENTRY *qglTexImage3D)(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+extern void (GLAPIENTRY *qglTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+extern void (GLAPIENTRY *qglCopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 #endif
 
 extern int gl_texturecubemap;
@@ -322,8 +350,8 @@ extern int gl_texturecubemap;
 
 extern int gl_dot3arb;
 #ifndef GL_DOT3_RGB_ARB
-#define DOT3_RGB_ARB                           0x86AE
-#define DOT3_RGBA_ARB                          0x86AF
+#define GL_DOT3_RGB_ARB                                0x86AE
+#define GL_DOT3_RGBA_ARB                               0x86AF
 #endif
 
 /*
@@ -335,6 +363,39 @@ extern int gl_dot3ext;
 #endif
 */
 
+#ifndef GL_SCISSOR_TEST
+#define GL_SCISSOR_TEST                                0x0C11
+#define GL_SCISSOR_BOX                         0x0C10
+#endif
+
+// GL_SGIS_texture_edge_clamp or GL_EXT_texture_edge_clamp
+extern int gl_support_clamptoedge;
+#ifndef GL_CLAMP_TO_EDGE
+#define GL_CLAMP_TO_EDGE 0x812F
+#endif
+
+//GL_NV_vertex_array_range
+extern GLvoid *(GLAPIENTRY *qglAllocateMemoryNV)(GLsizei size, GLfloat readFrequency, GLfloat writeFrequency, GLfloat priority);
+extern GLvoid (GLAPIENTRY *qglFreeMemoryNV)(GLvoid *pointer);
+extern GLvoid (GLAPIENTRY *qglVertexArrayRangeNV)(GLsizei length, GLvoid *pointer);
+extern GLvoid (GLAPIENTRY *qglFlushVertexArrayRangeNV)(GLvoid);
+#define GL_VERTEX_ARRAY_RANGE_NV 0x851D
+#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E
+#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520
+#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521
+extern int gl_support_var;
+
+//GL_NV_vertex_array_range2
+#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533
+extern int gl_support_var2;
+
+//GL_EXT_stencil_two_side
+#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910
+#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911
+extern void (GLAPIENTRY *qglActiveStencilFaceEXT)(GLenum);
+extern int gl_support_stenciltwoside;
+
+extern void (GLAPIENTRY *qglScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
 
 extern void (GLAPIENTRY *qglClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
 
@@ -344,18 +405,18 @@ extern void (GLAPIENTRY *qglClear)(GLbitfield mask);
 extern void (GLAPIENTRY *qglBlendFunc)(GLenum sfactor, GLenum dfactor);
 extern void (GLAPIENTRY *qglCullFace)(GLenum mode);
 
-extern void (GLAPIENTRY *qglDrawBuffer)(GLenum mode);
-extern void (GLAPIENTRY *qglReadBuffer)(GLenum mode);
+//extern void (GLAPIENTRY *qglDrawBuffer)(GLenum mode);
+//extern void (GLAPIENTRY *qglReadBuffer)(GLenum mode);
 extern void (GLAPIENTRY *qglEnable)(GLenum cap);
 extern void (GLAPIENTRY *qglDisable)(GLenum cap);
-//extern GLboolean GLAPIENTRY *qglIsEnabled)(GLenum cap);
+extern GLboolean (GLAPIENTRY *qglIsEnabled)(GLenum cap);
 
 extern void (GLAPIENTRY *qglEnableClientState)(GLenum cap);
 extern void (GLAPIENTRY *qglDisableClientState)(GLenum cap);
 
-extern void (GLAPIENTRY *qglGetBooleanv)(GLenum pname, GLboolean *params);
-extern void (GLAPIENTRY *qglGetDoublev)(GLenum pname, GLdouble *params);
-extern void (GLAPIENTRY *qglGetFloatv)(GLenum pname, GLfloat *params);
+//extern void (GLAPIENTRY *qglGetBooleanv)(GLenum pname, GLboolean *params);
+//extern void (GLAPIENTRY *qglGetDoublev)(GLenum pname, GLdouble *params);
+//extern void (GLAPIENTRY *qglGetFloatv)(GLenum pname, GLfloat *params);
 extern void (GLAPIENTRY *qglGetIntegerv)(GLenum pname, GLint *params);
 
 extern GLenum (GLAPIENTRY *qglGetError)(void);
@@ -372,13 +433,14 @@ extern void (GLAPIENTRY *qglColorMask)(GLboolean red, GLboolean green, GLboolean
 extern void (GLAPIENTRY *qglDrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
 extern void (GLAPIENTRY *qglDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
 extern void (GLAPIENTRY *qglVertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
-//extern void (GLAPIENTRY *qglNormalPointer)(GLenum type, GLsizei stride, const GLvoid *ptr);
+extern void (GLAPIENTRY *qglNormalPointer)(GLenum type, GLsizei stride, const GLvoid *ptr);
 extern void (GLAPIENTRY *qglColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
 extern void (GLAPIENTRY *qglTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
 extern void (GLAPIENTRY *qglArrayElement)(GLint i);
 
 extern void (GLAPIENTRY *qglColor4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
 extern void (GLAPIENTRY *qglTexCoord2f)(GLfloat s, GLfloat t);
+extern void (GLAPIENTRY *qglTexCoord3f)(GLfloat s, GLfloat t, GLfloat r);
 extern void (GLAPIENTRY *qglVertex2f)(GLfloat x, GLfloat y);
 extern void (GLAPIENTRY *qglVertex3f)(GLfloat x, GLfloat y, GLfloat z);
 extern void (GLAPIENTRY *qglBegin)(GLenum mode);
@@ -391,16 +453,16 @@ extern void (GLAPIENTRY *qglViewport)(GLint x, GLint y, GLsizei width, GLsizei h
 //extern void (GLAPIENTRY *qglPushMatrix)(void);
 //extern void (GLAPIENTRY *qglPopMatrix)(void);
 extern void (GLAPIENTRY *qglLoadIdentity)(void);
-extern void (GLAPIENTRY *qglLoadMatrixd)(const GLdouble *m);
+//extern void (GLAPIENTRY *qglLoadMatrixd)(const GLdouble *m);
 extern void (GLAPIENTRY *qglLoadMatrixf)(const GLfloat *m);
 //extern void (GLAPIENTRY *qglMultMatrixd)(const GLdouble *m);
 //extern void (GLAPIENTRY *qglMultMatrixf)(const GLfloat *m);
 //extern void (GLAPIENTRY *qglRotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-extern void (GLAPIENTRY *qglRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+//extern void (GLAPIENTRY *qglRotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
 //extern void (GLAPIENTRY *qglScaled)(GLdouble x, GLdouble y, GLdouble z);
 //extern void (GLAPIENTRY *qglScalef)(GLfloat x, GLfloat y, GLfloat z);
 //extern void (GLAPIENTRY *qglTranslated)(GLdouble x, GLdouble y, GLdouble z);
-extern void (GLAPIENTRY *qglTranslatef)(GLfloat x, GLfloat y, GLfloat z);
+//extern void (GLAPIENTRY *qglTranslatef)(GLfloat x, GLfloat y, GLfloat z);
 
 extern void (GLAPIENTRY *qglReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
 
@@ -410,17 +472,19 @@ extern void (GLAPIENTRY *qglStencilOp)(GLenum fail, GLenum zfail, GLenum zpass);
 extern void (GLAPIENTRY *qglClearStencil)(GLint s);
 
 //extern void (GLAPIENTRY *qglTexEnvf)(GLenum target, GLenum pname, GLfloat param);
+extern void (GLAPIENTRY *qglTexEnvfv)(GLenum target, GLenum pname, const GLfloat *params);
 extern void (GLAPIENTRY *qglTexEnvi)(GLenum target, GLenum pname, GLint param);
-//extern void (GLAPIENTRY *qglTexParameterf)(GLenum target, GLenum pname, GLfloat param);
+extern void (GLAPIENTRY *qglTexParameterf)(GLenum target, GLenum pname, GLfloat param);
+//extern void (GLAPIENTRY *qglTexParameterfv)(GLenum target, GLenum pname, GLfloat *params);
 extern void (GLAPIENTRY *qglTexParameteri)(GLenum target, GLenum pname, GLint param);
 
 extern void (GLAPIENTRY *qglGenTextures)(GLsizei n, GLuint *textures);
 extern void (GLAPIENTRY *qglDeleteTextures)(GLsizei n, const GLuint *textures);
 extern void (GLAPIENTRY *qglBindTexture)(GLenum target, GLuint texture);
-extern void (GLAPIENTRY *qglPrioritizeTextures)(GLsizei n, const GLuint *textures, const GLclampf *priorities);
-extern GLboolean (GLAPIENTRY *qglAreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences);
+//extern void (GLAPIENTRY *qglPrioritizeTextures)(GLsizei n, const GLuint *textures, const GLclampf *priorities);
+//extern GLboolean (GLAPIENTRY *qglAreTexturesResident)(GLsizei n, const GLuint *textures, GLboolean *residences);
 extern GLboolean (GLAPIENTRY *qglIsTexture)(GLuint texture);
-extern void (GLAPIENTRY *qglPixelStoref)(GLenum pname, GLfloat param);
+//extern void (GLAPIENTRY *qglPixelStoref)(GLenum pname, GLfloat param);
 extern void (GLAPIENTRY *qglPixelStorei)(GLenum pname, GLint param);
 
 extern void (GLAPIENTRY *qglTexImage1D)(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
@@ -432,6 +496,8 @@ extern void (GLAPIENTRY *qglCopyTexImage2D)(GLenum target, GLint level, GLenum i
 extern void (GLAPIENTRY *qglCopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
 extern void (GLAPIENTRY *qglCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 
+extern void (GLAPIENTRY *qglPolygonOffset)(GLfloat factor, GLfloat units);
+
 #if WIN32
 extern int (WINAPI *qwglChoosePixelFormat)(HDC, CONST PIXELFORMATDESCRIPTOR *);
 extern int (WINAPI *qwglDescribePixelFormat)(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
@@ -448,7 +514,7 @@ extern BOOL (WINAPI *qwglSwapIntervalEXT)(int interval);
 #define DEBUGGL
 
 #ifdef DEBUGGL
-#define CHECKGLERROR if ((errornumber = qglGetError())) GL_PrintError(errornumber, __FILE__, __LINE__);
+#define CHECKGLERROR {if (gl_printcheckerror.integer) Con_Printf("CHECKGLERROR at %s:%d\n", __FILE__, __LINE__);if (gl_paranoid.integer && (errornumber = qglGetError())) GL_PrintError(errornumber, __FILE__, __LINE__);}
 extern int errornumber;
 void GL_PrintError(int errornumber, char *filename, int linenumber);
 #else