]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_agl.c
globally rename model_t to dp_model_t for OpenSolaris. Sorry, guys who now have svn...
[xonotic/darkplaces.git] / vid_agl.c
index d7a4b7c70ebe260efc1e5211899e930cea7ef6b7..984219b1e08973ae2d29a43a3ebf78242bbb7a7c 100644 (file)
--- a/vid_agl.c
+++ b/vid_agl.c
@@ -499,29 +499,41 @@ static void VID_ProcessPendingAsyncEvents (void)
                Sys_Quit(0);
 }
 
-static void VID_BuildAGLAttrib(GLint *attrib, qboolean stencil, qboolean fullscreen, qboolean stereobuffer)
+static void VID_BuildAGLAttrib(GLint *attrib, qboolean stencil, qboolean fullscreen, qboolean stereobuffer, int samples)
 {
        *attrib++ = AGL_RGBA;
-       *attrib++ = AGL_RED_SIZE;*attrib++ = 1;
-       *attrib++ = AGL_GREEN_SIZE;*attrib++ = 1;
-       *attrib++ = AGL_BLUE_SIZE;*attrib++ = 1;
+       *attrib++ = AGL_RED_SIZE;*attrib++ = stencil ? 8 : 5;
+       *attrib++ = AGL_GREEN_SIZE;*attrib++ = stencil ? 8 : 5;
+       *attrib++ = AGL_BLUE_SIZE;*attrib++ = stencil ? 8 : 5;
        *attrib++ = AGL_DOUBLEBUFFER;
-       *attrib++ = AGL_DEPTH_SIZE;*attrib++ = 1;
+       *attrib++ = AGL_DEPTH_SIZE;*attrib++ = stencil ? 24 : 16;
 
        // if stencil is enabled, ask for alpha too
        if (stencil)
        {
                *attrib++ = AGL_STENCIL_SIZE;*attrib++ = 8;
-               *attrib++ = AGL_ALPHA_SIZE;*attrib++ = 1;
+               *attrib++ = AGL_ALPHA_SIZE;*attrib++ = 8;
        }
        if (fullscreen)
                *attrib++ = AGL_FULLSCREEN;
        if (stereobuffer)
                *attrib++ = AGL_STEREO;
+#ifdef AGL_SAMPLE_BUFFERS_ARB
+#ifdef AGL_SAMPLES_ARB
+       if (samples > 1)
+       {
+               *attrib++ = AGL_SAMPLE_BUFFERS_ARB;
+               *attrib++ = 1;
+               *attrib++ = AGL_SAMPLES_ARB;
+               *attrib++ = samples;
+       }
+#endif
+#endif
+
        *attrib++ = AGL_NONE;
 }
 
-int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate, int stereobuffer)
+int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate, int stereobuffer, int samples)
 {
     const EventTypeSpec winEvents[] =
        {
@@ -592,7 +604,7 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate
                                                           GetEventTypeCount(winEvents), winEvents, window, NULL);
 
        // Create the desired attribute list
-       VID_BuildAGLAttrib(attributes, bpp == 32, fullscreen, stereobuffer);
+       VID_BuildAGLAttrib(attributes, bpp == 32, fullscreen, stereobuffer, samples);
 
        if (!fullscreen)
        {
@@ -695,9 +707,21 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate
        gl_vendor = (const char *)qglGetString(GL_VENDOR);
        gl_version = (const char *)qglGetString(GL_VERSION);
        gl_extensions = (const char *)qglGetString(GL_EXTENSIONS);
+       gl_platformextensions = "";
        gl_platform = "AGL";
        gl_videosyncavailable = true;
 
+       if (!gl_extensions)
+               gl_extensions = "";
+       if (!gl_platformextensions)
+               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);
+
        multithreadedgl = false;
        vid_isfullscreen = fullscreen;
        vid_usingmouse = false;