--- quake2/ref_gl/gl_rmain.c 2018/04/24 17:58:33 1.1 +++ quake2/ref_gl/gl_rmain.c 2018/04/24 17:59:26 1.1.1.2 @@ -64,6 +64,8 @@ cvar_t *r_lightlevel; // FIXME: This is cvar_t *gl_nosubimage; cvar_t *gl_allow_software; +cvar_t *gl_vertex_arrays; + cvar_t *gl_particle_min_size; cvar_t *gl_particle_max_size; cvar_t *gl_particle_size; @@ -72,10 +74,10 @@ cvar_t *gl_particle_att_b; cvar_t *gl_particle_att_c; cvar_t *gl_ext_swapinterval; -cvar_t *gl_ext_gamma_control; cvar_t *gl_ext_palettedtexture; cvar_t *gl_ext_multitexture; cvar_t *gl_ext_pointparameters; +cvar_t *gl_ext_compiled_vertex_array; cvar_t *gl_log; cvar_t *gl_bitdepth; @@ -102,6 +104,8 @@ cvar_t *gl_playermip; cvar_t *gl_saturatelighting; cvar_t *gl_swapinterval; cvar_t *gl_texturemode; +cvar_t *gl_texturealphamode; +cvar_t *gl_texturesolidmode; cvar_t *gl_lockpvs; cvar_t *gl_3dlabs_broken; @@ -774,41 +778,7 @@ void R_Clear (void) void R_Flash( void ) { -#if 0 - if ( qwglSetDeviceGammaRampEXT != 0 ) - { - static qboolean flashed; - - unsigned char red[256], green[256], blue[256]; - int i; - - if ( ( v_blend[3] == 0.0F ) && flashed ) - { - flashed = false; - - qwglSetDeviceGammaRampEXT( gl_state.originalRedGammaTable, - gl_state.originalGreenGammaTable, - gl_state.originalBlueGammaTable ); - } - else if ( v_blend[3] != 0.0F ) - { - flashed = true; - - for ( i = 0; i < 256; i++ ) - { - red[i] = i; - green[i] = 0; - blue[i] = 0; - } - - qwglSetDeviceGammaRampEXT( red, green, blue ); - } - } - else -#endif - { - R_PolyBlend (); - } + R_PolyBlend (); } /* @@ -1015,7 +985,7 @@ void R_Register( void ) gl_skymip = ri.Cvar_Get ("gl_skymip", "0", 0); gl_showtris = ri.Cvar_Get ("gl_showtris", "0", 0); gl_ztrick = ri.Cvar_Get ("gl_ztrick", "0", 0); - gl_finish = ri.Cvar_Get ("gl_finish", "0", 0); + gl_finish = ri.Cvar_Get ("gl_finish", "0", CVAR_ARCHIVE); gl_clear = ri.Cvar_Get ("gl_clear", "0", 0); gl_cull = ri.Cvar_Get ("gl_cull", "1", 0); gl_polyblend = ri.Cvar_Get ("gl_polyblend", "1", 0); @@ -1024,13 +994,17 @@ void R_Register( void ) gl_monolightmap = ri.Cvar_Get( "gl_monolightmap", "0", 0 ); gl_driver = ri.Cvar_Get( "gl_driver", "opengl32", CVAR_ARCHIVE ); gl_texturemode = ri.Cvar_Get( "gl_texturemode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE ); + gl_texturealphamode = ri.Cvar_Get( "gl_texturealphamode", "default", CVAR_ARCHIVE ); + gl_texturesolidmode = ri.Cvar_Get( "gl_texturesolidmode", "default", CVAR_ARCHIVE ); gl_lockpvs = ri.Cvar_Get( "gl_lockpvs", "0", 0 ); + gl_vertex_arrays = ri.Cvar_Get( "gl_vertex_arrays", "0", CVAR_ARCHIVE ); + gl_ext_swapinterval = ri.Cvar_Get( "gl_ext_swapinterval", "1", CVAR_ARCHIVE ); - gl_ext_gamma_control = ri.Cvar_Get( "gl_ext_gamma_control", "1", CVAR_ARCHIVE ); gl_ext_palettedtexture = ri.Cvar_Get( "gl_ext_palettedtexture", "1", CVAR_ARCHIVE ); gl_ext_multitexture = ri.Cvar_Get( "gl_ext_multitexture", "1", CVAR_ARCHIVE ); gl_ext_pointparameters = ri.Cvar_Get( "gl_ext_pointparameters", "1", CVAR_ARCHIVE ); + gl_ext_compiled_vertex_array = ri.Cvar_Get( "gl_ext_compiled_vertex_array", "1", CVAR_ARCHIVE ); gl_drawbuffer = ri.Cvar_Get( "gl_drawbuffer", "GL_BACK", 0 ); gl_swapinterval = ri.Cvar_Get( "gl_swapinterval", "1", CVAR_ARCHIVE ); @@ -1110,6 +1084,7 @@ R_Init int R_Init( void *hinstance, void *hWnd ) { char renderer_buffer[1000]; + char vendor_buffer[1000]; int err; int j; extern float r_turbsin[256]; @@ -1168,6 +1143,9 @@ int R_Init( void *hinstance, void *hWnd strcpy( renderer_buffer, gl_config.renderer_string ); strlwr( renderer_buffer ); + strcpy( vendor_buffer, gl_config.vendor_string ); + strlwr( vendor_buffer ); + if ( strstr( renderer_buffer, "voodoo" ) ) { if ( !strstr( renderer_buffer, "rush" ) ) @@ -1175,7 +1153,8 @@ int R_Init( void *hinstance, void *hWnd else gl_config.renderer = GL_RENDERER_VOODOO_RUSH; } - + else if ( strstr( vendor_buffer, "sgi" ) ) + gl_config.renderer = GL_RENDERER_SGI; else if ( strstr( renderer_buffer, "permedia" ) ) gl_config.renderer = GL_RENDERER_PERMEDIA2; else if ( strstr( renderer_buffer, "glint" ) ) @@ -1246,38 +1225,26 @@ int R_Init( void *hinstance, void *hWnd ** grab extensions */ #ifdef WIN32 - if ( strstr( gl_config.extensions_string, "WGL_EXT_swap_control" ) ) + if ( strstr( gl_config.extensions_string, "GL_EXT_compiled_vertex_array" ) || + strstr( gl_config.extensions_string, "GL_SGI_compiled_vertex_array" ) ) { - qwglSwapIntervalEXT = ( BOOL (WINAPI *)(int)) qwglGetProcAddress( "wglSwapIntervalEXT" ); - ri.Con_Printf( PRINT_ALL, "...enabling WGL_EXT_swap_control\n" ); + ri.Con_Printf( PRINT_ALL, "...enabling GL_EXT_compiled_vertex_array\n" ); + qglLockArraysEXT = ( void * ) qwglGetProcAddress( "glLockArraysEXT" ); + qglUnlockArraysEXT = ( void * ) qwglGetProcAddress( "glUnlockArraysEXT" ); } else { - ri.Con_Printf( PRINT_ALL, "...WGL_EXT_swap_control not found\n" ); + ri.Con_Printf( PRINT_ALL, "...GL_EXT_compiled_vertex_array not found\n" ); } - if ( strstr( gl_config.extensions_string, "WGL_NVIDIA_gamma_control" ) || - strstr( gl_config.extensions_string, "WGL_EXT_gamma_control" ) ) + if ( strstr( gl_config.extensions_string, "WGL_EXT_swap_control" ) ) { - if ( gl_ext_gamma_control->value ) - { - qwglGetDeviceGammaRampEXT = ( BOOL (WINAPI *)(unsigned char*, unsigned char*, unsigned char *)) qwglGetProcAddress( "wglGetDeviceGammaRampNVIDIA" ); - qwglSetDeviceGammaRampEXT = ( BOOL (WINAPI *)(const unsigned char *, const unsigned char *, const unsigned char *)) qwglGetProcAddress( "wglSetDeviceGammaRampNVIDIA" ); - - ri.Con_Printf( PRINT_ALL, "...enabling WGL_EXT_gamma_control\n" ); - - qwglGetDeviceGammaRampEXT( gl_state.originalRedGammaTable, - gl_state.originalGreenGammaTable, - gl_state.originalBlueGammaTable ); - } - else - { - ri.Con_Printf( PRINT_ALL, "...ignoring WGL_EXT_gamma_control\n" ); - } + qwglSwapIntervalEXT = ( BOOL (WINAPI *)(int)) qwglGetProcAddress( "wglSwapIntervalEXT" ); + ri.Con_Printf( PRINT_ALL, "...enabling WGL_EXT_swap_control\n" ); } else { - ri.Con_Printf( PRINT_ALL, "...WGL_EXT_gamma_control not found\n" ); + ri.Con_Printf( PRINT_ALL, "...WGL_EXT_swap_control not found\n" ); } if ( strstr( gl_config.extensions_string, "GL_EXT_point_parameters" ) ) @@ -1423,10 +1390,7 @@ void R_BeginFrame( float camera_separati { vid_gamma->modified = false; - if ( qwglSetDeviceGammaRampEXT != 0 ) - { - } - else if ( gl_config.renderer & ( GL_RENDERER_VOODOO ) ) + if ( gl_config.renderer & ( GL_RENDERER_VOODOO ) ) { char envbuffer[1024]; float g; @@ -1465,7 +1429,7 @@ void R_BeginFrame( float camera_separati if ( gl_state.camera_separation == 0 || !gl_state.stereo_enabled ) { - if ( stricmp( gl_drawbuffer->string, "GL_FRONT" ) == 0 ) + if ( Q_stricmp( gl_drawbuffer->string, "GL_FRONT" ) == 0 ) qglDrawBuffer( GL_FRONT ); else qglDrawBuffer( GL_BACK ); @@ -1481,6 +1445,18 @@ void R_BeginFrame( float camera_separati gl_texturemode->modified = false; } + if ( gl_texturealphamode->modified ) + { + GL_TextureAlphaMode( gl_texturealphamode->string ); + gl_texturealphamode->modified = false; + } + + if ( gl_texturesolidmode->modified ) + { + GL_TextureSolidMode( gl_texturesolidmode->string ); + gl_texturesolidmode->modified = false; + } + /* ** swapinterval stuff */