From 171038bec5110ecf941f3b69f6bd04b0a0c007cf Mon Sep 17 00:00:00 2001 From: g-cont Date: Tue, 3 Mar 2015 00:00:00 +0300 Subject: [PATCH] 03 Mar 2015 --- engine/client/gl_local.h | 3 +++ engine/client/gl_vidnt.c | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/engine/client/gl_local.h b/engine/client/gl_local.h index b67aa789..6777dc7a 100644 --- a/engine/client/gl_local.h +++ b/engine/client/gl_local.h @@ -558,6 +558,9 @@ typedef struct GLfloat max_texture_anisotropy; GLfloat max_texture_lodbias; + GLint max_vertex_uniforms; + GLint max_vertex_attribs; + int color_bits; int alpha_bits; int depth_bits; diff --git a/engine/client/gl_vidnt.c b/engine/client/gl_vidnt.c index b1b7a09d..be2c8b30 100644 --- a/engine/client/gl_vidnt.c +++ b/engine/client/gl_vidnt.c @@ -19,9 +19,10 @@ GNU General Public License for more details. #include "mod_local.h" #include "input.h" -#define VID_DEFAULTMODE "1" +#define VID_AUTOMODE "-1" +#define VID_DEFAULTMODE 2.0f #define DISP_CHANGE_BADDUALVIEW -6 // MSVC 6.0 doesn't -#define num_vidmodes ((int)(sizeof(vidmode) / sizeof(vidmode[0])) - 1) +#define num_vidmodes ( sizeof( vidmode ) / sizeof( vidmode[0] )) #define WINDOW_STYLE (WS_OVERLAPPED|WS_BORDER|WS_SYSMENU|WS_CAPTION|WS_VISIBLE) #define WINDOW_EX_STYLE (0) #define WINDOW_NAME "Xash Window" // Half-Life @@ -1362,9 +1363,30 @@ qboolean VID_SetMode( void ) qboolean fullscreen; rserr_t err; - fullscreen = vid_fullscreen->integer; gl_swapInterval->modified = true; + if( vid_mode->integer == -1 ) // trying to get resolution automatically by default + { + HDC hDCScreen = GetDC( NULL ); + int iScreenWidth = GetDeviceCaps( hDCScreen, HORZRES ); + int iScreenHeight = GetDeviceCaps( hDCScreen, VERTRES ); + + ReleaseDC( NULL, hDCScreen ); + + if( R_DescribeVIDMode( iScreenWidth, iScreenHeight )) + { + MsgDev( D_NOTE, "found specified vid mode %i [%ix%i]\n", vid_mode->integer, iScreenWidth, iScreenHeight ); + Cvar_SetFloat( "fullscreen", 1 ); + } + else + { + MsgDev( D_NOTE, "failed to set specified vid mode [%ix%i]\n", iScreenWidth, iScreenHeight ); + Cvar_SetFloat( "vid_mode", VID_DEFAULTMODE ); + } + } + + fullscreen = vid_fullscreen->integer; + if(( err = R_ChangeDisplaySettings( vid_mode->integer, fullscreen )) == rserr_ok ) { glConfig.prev_mode = vid_mode->integer; @@ -1541,7 +1563,10 @@ void R_RenderInfo_f( void ) Msg( "GL_VENDOR: %s\n", glConfig.vendor_string ); Msg( "GL_RENDERER: %s\n", glConfig.renderer_string ); Msg( "GL_VERSION: %s\n", glConfig.version_string ); - Msg( "GL_EXTENSIONS: %s\n", glConfig.extensions_string ); + + // don't spam about extensions + if( host.developer >= 4 ) + Msg( "GL_EXTENSIONS: %s\n", glConfig.extensions_string ); Msg( "GL_MAX_TEXTURE_SIZE: %i\n", glConfig.max_2d_texture_size ); @@ -1557,6 +1582,8 @@ void R_RenderInfo_f( void ) { Msg( "GL_MAX_TEXTURE_COORDS_ARB: %i\n", glConfig.max_texture_coords ); Msg( "GL_MAX_TEXTURE_IMAGE_UNITS_ARB: %i\n", glConfig.max_teximage_units ); + Msg( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: %i\n", glConfig.max_vertex_uniforms ); + Msg( "GL_MAX_VERTEX_ATTRIBS_ARB: %i\n", glConfig.max_vertex_attribs ); } Msg( "\n" ); @@ -1642,7 +1669,7 @@ void GL_InitCommands( void ) vid_gamma = Cvar_Get( "gamma", "1.0", CVAR_ARCHIVE, "gamma amount" ); vid_texgamma = Cvar_Get( "texgamma", "2.2", CVAR_GLCONFIG, "texgamma amount (default Half-Life artwork gamma)" ); - vid_mode = Cvar_Get( "vid_mode", VID_DEFAULTMODE, CVAR_RENDERINFO, "display resolution mode" ); + vid_mode = Cvar_Get( "vid_mode", VID_AUTOMODE, CVAR_RENDERINFO, "display resolution mode" ); vid_fullscreen = Cvar_Get( "fullscreen", "0", CVAR_RENDERINFO, "set in 1 to enable fullscreen mode" ); vid_displayfrequency = Cvar_Get ( "vid_displayfrequency", "0", CVAR_RENDERINFO, "fullscreen refresh rate" ); @@ -1810,6 +1837,9 @@ void GL_InitExtensions( void ) Cvar_Get( "gl_max_texture_size", "0", CVAR_INIT, "opengl texture max dims" ); Cvar_Set( "gl_max_texture_size", va( "%i", glConfig.max_2d_texture_size )); + pglGetIntegerv( GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &glConfig.max_vertex_uniforms ); + pglGetIntegerv( GL_MAX_VERTEX_ATTRIBS_ARB, &glConfig.max_vertex_attribs ); + // MCD has buffering issues if(Q_strstr( glConfig.renderer_string, "gdi" )) Cvar_SetFloat( "gl_finish", 1 );