]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_shared.c
got rid of Cshader system as it really wasn't helping anything, now all surfaces...
[xonotic/darkplaces.git] / vid_shared.c
index b0568601358366cf59067fdda4add97edb49e5e0..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;
@@ -243,7 +247,7 @@ int GL_CheckExtension(const char *name, const dllfunction_t *funcs, const char *
 
        if (disableparm && (COM_CheckParm(disableparm) || COM_CheckParm("-safe")))
        {
-               Con_DPrintf("disabled by commandline\n");
+               Con_DPrint("disabled by commandline\n");
                return false;
        }
 
@@ -262,12 +266,12 @@ int GL_CheckExtension(const char *name, const dllfunction_t *funcs, const char *
                // delay the return so it prints all missing functions
                if (failed)
                        return false;
-               Con_DPrintf("enabled\n");
+               Con_DPrint("enabled\n");
                return true;
        }
        else
        {
-               Con_DPrintf("not detected\n");
+               Con_DPrint("not detected\n");
                return 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,17 +436,18 @@ 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");
 
-       Con_DPrintf ("GL_VENDOR: %s\n", gl_vendor);
-       Con_DPrintf ("GL_RENDERER: %s\n", gl_renderer);
-       Con_DPrintf ("GL_VERSION: %s\n", gl_version);
-       Con_DPrintf ("GL_EXTENSIONS: %s\n", gl_extensions);
-       Con_DPrintf ("%s_EXTENSIONS: %s\n", gl_platform, gl_platformextensions);
+       Con_DPrintf("GL_VENDOR: %s\n", gl_vendor);
+       Con_DPrintf("GL_RENDERER: %s\n", gl_renderer);
+       Con_DPrintf("GL_VERSION: %s\n", gl_version);
+       Con_DPrintf("GL_EXTENSIONS: %s\n", gl_extensions);
+       Con_DPrintf("%s_EXTENSIONS: %s\n", gl_platform, gl_platformextensions);
 
-       Con_DPrintf("Checking OpenGL extensions...\n");
+       Con_DPrint("Checking OpenGL extensions...\n");
 
        if (!GL_CheckExtension("glDrawRangeElements", drawrangeelementsfuncs, "-nodrawrangeelements", true))
                GL_CheckExtension("GL_EXT_draw_range_elements", drawrangeelementsextfuncs, "-nodrawrangeelements", false);
@@ -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;
@@ -809,7 +822,7 @@ void VID_Restart_f(void)
        VID_Close();
        if (!VID_Mode(vid_fullscreen.integer, vid_width.integer, vid_height.integer, vid_bitsperpixel.integer))
        {
-               Con_Printf("Video mode change failed\n");
+               Con_Print("Video mode change failed\n");
                if (!VID_Mode(current_vid_fullscreen, current_vid_width, current_vid_height, current_vid_bitsperpixel))
                        Sys_Error("Unable to restore to last working video mode\n");
        }
@@ -845,11 +858,11 @@ void VID_Open(void)
                        Cvar_SetQuick(&vid_bitsperpixel, com_argv[i+1]);
        }
 
-       Con_DPrintf("Starting video system\n");
+       Con_DPrint("Starting video system\n");
        success = VID_Mode(vid_fullscreen.integer, vid_width.integer, vid_height.integer, vid_bitsperpixel.integer);
        if (!success)
        {
-               Con_Printf("Desired video mode fail, trying fallbacks...\n");
+               Con_Print("Desired video mode fail, trying fallbacks...\n");
                if (!success && vid_bitsperpixel.integer > 16)
                        success = VID_Mode(vid_fullscreen.integer, vid_width.integer, vid_height.integer, 16);
                if (!success && (vid_width.integer > 640 || vid_height.integer > 480))