aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--code/renderer/tr_init.c3
-rw-r--r--code/renderer/tr_local.h1
-rw-r--r--code/sdl/sdl_glimp.c6
3 files changed, 10 insertions, 0 deletions
diff --git a/code/renderer/tr_init.c b/code/renderer/tr_init.c
index dfe6ca0..c58006f 100644
--- a/code/renderer/tr_init.c
+++ b/code/renderer/tr_init.c
@@ -102,6 +102,7 @@ cvar_t *r_depthbits;
cvar_t *r_colorbits;
cvar_t *r_primitives;
cvar_t *r_texturebits;
+cvar_t *r_ext_multisample;
cvar_t *r_drawBuffer;
cvar_t *r_lightmap;
@@ -900,6 +901,8 @@ void R_Register( void )
r_colorbits = ri.Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
r_stencilbits = ri.Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE | CVAR_LATCH );
r_depthbits = ri.Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE | CVAR_LATCH );
+ r_ext_multisample = ri.Cvar_Get( "r_ext_multisample", "0", CVAR_ARCHIVE | CVAR_LATCH );
+ ri.Cvar_CheckRange( r_ext_multisample, 0, 4, qtrue );
r_overBrightBits = ri.Cvar_Get ("r_overBrightBits", "1", CVAR_ARCHIVE | CVAR_LATCH );
r_ignorehwgamma = ri.Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE | CVAR_LATCH);
r_mode = ri.Cvar_Get( "r_mode", "3", CVAR_ARCHIVE | CVAR_LATCH );
diff --git a/code/renderer/tr_local.h b/code/renderer/tr_local.h
index 897d54b..3abcfbe 100644
--- a/code/renderer/tr_local.h
+++ b/code/renderer/tr_local.h
@@ -1008,6 +1008,7 @@ extern cvar_t *r_stencilbits; // number of desired stencil bits
extern cvar_t *r_depthbits; // number of desired depth bits
extern cvar_t *r_colorbits; // number of desired color bits, only relevant for fullscreen
extern cvar_t *r_texturebits; // number of desired texture bits
+extern cvar_t *r_ext_multisample;
// 0 = use framebuffer depth
// 16 = use 16-bit textures
// 32 = use 32-bit textures
diff --git a/code/sdl/sdl_glimp.c b/code/sdl/sdl_glimp.c
index f1df177..0b143d7 100644
--- a/code/sdl/sdl_glimp.c
+++ b/code/sdl/sdl_glimp.c
@@ -208,6 +208,7 @@ static int GLimp_SetMode( int mode, qboolean fullscreen )
int sdlcolorbits;
int colorbits, depthbits, stencilbits;
int tcolorbits, tdepthbits, tstencilbits;
+ int samples;
int i = 0;
SDL_Surface *vidscreen = NULL;
Uint32 flags = SDL_OPENGL;
@@ -270,6 +271,7 @@ static int GLimp_SetMode( int mode, qboolean fullscreen )
else
depthbits = r_depthbits->value;
stencilbits = r_stencilbits->value;
+ samples = r_ext_multisample->value;
for (i = 0; i < 16; i++)
{
@@ -337,6 +339,9 @@ static int GLimp_SetMode( int mode, qboolean fullscreen )
SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, tdepthbits );
SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, tstencilbits );
+ SDL_GL_SetAttribute( SDL_GL_MULTISAMPLEBUFFERS, samples ? 1 : 0 );
+ SDL_GL_SetAttribute( SDL_GL_MULTISAMPLESAMPLES, samples );
+
if(r_stereoEnabled->integer)
{
glConfig.stereoEnabled = qtrue;
@@ -674,6 +679,7 @@ void GLimp_Init( void )
{
ri.Printf( PRINT_ALL, "Setting r_mode %d failed, falling back on r_mode %d\n",
r_mode->integer, R_MODE_FALLBACK );
+ ri.Cvar_Set("r_ext_multisample", "0");
if( !GLimp_StartDriverAndSetMode( R_MODE_FALLBACK, r_fullscreen->integer ) )
success = qfalse;
}