]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_shared.c
now supports GL_EXT_stencil_two_side extension (found on NV30/R300 class cards),...
[xonotic/darkplaces.git] / vid_shared.c
index 5b5d40c1179748a29a03cb862bf6398d0362d013..e633c50ad9600c20e408b43577d50d256db29b3c 100644 (file)
@@ -40,6 +40,8 @@ int gl_support_var2 = false;
 int gl_support_anisotropy = false;
 // GL_NV_texture_shader
 int gl_textureshader = false;
+// GL_EXT_stencil_two_side
+int gl_support_stenciltwoside = false;
 
 // LordHavoc: if window is hidden, don't update screen
 int vid_hidden = true;
@@ -231,6 +233,8 @@ void (GLAPIENTRY *qglScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
 
 void (GLAPIENTRY *qglPolygonOffset)(GLfloat factor, GLfloat units);
 
+void (GLAPIENTRY *qglActiveStencilFaceEXT)(GLenum);
+
 int GL_CheckExtension(const char *name, const dllfunction_t *funcs, const char *disableparm, int silent)
 {
        int failed = false;
@@ -415,6 +419,12 @@ static dllfunction_t wglvarfuncs[] =
        {NULL, NULL}
 };
 
+static dllfunction_t stenciltwosidefuncs[] =
+{
+       {"glActiveStencilFaceEXT", (void **) &qglActiveStencilFaceEXT},
+       {NULL, NULL}
+};
+
 
 void VID_CheckExtensions(void)
 {
@@ -426,6 +436,7 @@ void VID_CheckExtensions(void)
        gl_support_clamptoedge = false;
        gl_support_var = false;
        gl_support_var2 = false;
+       gl_support_stenciltwoside = false;
 
        if (!GL_CheckExtension("OpenGL 1.1.0", opengl110funcs, NULL, false))
                Sys_Error("OpenGL 1.1.0 functions not found\n");
@@ -465,6 +476,8 @@ void VID_CheckExtensions(void)
 
        gl_textureshader = GL_CheckExtension("GL_NV_texture_shader", NULL, "-notextureshader", false);
 
+       gl_support_stenciltwoside = GL_CheckExtension("GL_EXT_stencil_two_side", stenciltwosidefuncs, "-nostenciltwoside", false);
+
        // we don't care if it's an extension or not, they are identical functions, so keep it simple in the rendering code
        if (qglDrawRangeElements == NULL)
                qglDrawRangeElements = qglDrawRangeElementsEXT;