mirror of
https://github.com/UberGames/ioef.git
synced 2024-11-30 16:01:46 +00:00
- Added r_mode -2 for using display resolution.
- Changed q3_ui's very high video settings use display resolution.
This commit is contained in:
parent
8e689739f4
commit
1609d1c42b
3 changed files with 41 additions and 8 deletions
|
@ -297,7 +297,7 @@ static graphicsoptions_t s_graphicsoptions;
|
||||||
static InitialVideoOptions_s s_ivo_templates[] =
|
static InitialVideoOptions_s s_ivo_templates[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
6, qtrue, 3, 0, 2, 2, 1, 0, qtrue
|
6, qtrue, 3, 0, 2, 2, 1, 0, qtrue // Note: If r_availableModes is found, mode is changed to -2.
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
4, qtrue, 2, 0, 2, 1, 1, 0, qtrue // JDC: this was tq 3
|
4, qtrue, 2, 0, 2, 1, 1, 0, qtrue // JDC: this was tq 3
|
||||||
|
@ -372,6 +372,10 @@ static int GraphicsOptions_FindBuiltinResolution( int mode )
|
||||||
if( !resolutionsDetected )
|
if( !resolutionsDetected )
|
||||||
return mode;
|
return mode;
|
||||||
|
|
||||||
|
// Display resolution
|
||||||
|
if( mode == 0 )
|
||||||
|
return -2;
|
||||||
|
|
||||||
if( mode < 0 )
|
if( mode < 0 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -396,6 +400,10 @@ static int GraphicsOptions_FindDetectedResolution( int mode )
|
||||||
if( !resolutionsDetected )
|
if( !resolutionsDetected )
|
||||||
return mode;
|
return mode;
|
||||||
|
|
||||||
|
// Display resolution
|
||||||
|
if( mode == -2 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
if( mode < 0 )
|
if( mode < 0 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -425,11 +433,16 @@ static void GraphicsOptions_GetAspectRatios( void )
|
||||||
char str[ sizeof(ratioBuf[0]) ];
|
char str[ sizeof(ratioBuf[0]) ];
|
||||||
|
|
||||||
// calculate resolution's aspect ratio
|
// calculate resolution's aspect ratio
|
||||||
x = strchr( resolutions[r], 'x' ) + 1;
|
x = strchr( resolutions[r], 'x' );
|
||||||
|
if (x) {
|
||||||
|
x++;
|
||||||
Q_strncpyz( str, resolutions[r], x-resolutions[r] );
|
Q_strncpyz( str, resolutions[r], x-resolutions[r] );
|
||||||
w = atoi( str );
|
w = atoi( str );
|
||||||
h = atoi( x );
|
h = atoi( x );
|
||||||
Com_sprintf( str, sizeof(str), "%.2f:1", (float)w / (float)h );
|
Com_sprintf( str, sizeof(str), "%.2f:1", (float)w / (float)h );
|
||||||
|
} else {
|
||||||
|
Q_strncpyz(str, "Unknown", sizeof(str));
|
||||||
|
}
|
||||||
|
|
||||||
// rename common ratios ("1.33:1" -> "4:3")
|
// rename common ratios ("1.33:1" -> "4:3")
|
||||||
for( i = 0; knownRatios[i][0]; i++ ) {
|
for( i = 0; knownRatios[i][0]; i++ ) {
|
||||||
|
@ -489,6 +502,13 @@ static void GraphicsOptions_GetResolutions( void )
|
||||||
{
|
{
|
||||||
char* s = resbuf;
|
char* s = resbuf;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
|
|
||||||
|
// Add display resolution video mode
|
||||||
|
detectedResolutions[i++] = "Display Resolution";
|
||||||
|
|
||||||
|
// Use display resolution in "Very High Quality" template
|
||||||
|
s_ivo_templates[0].mode = -2;
|
||||||
|
|
||||||
while( s && i < ARRAY_LEN(detectedResolutions)-1 )
|
while( s && i < ARRAY_LEN(detectedResolutions)-1 )
|
||||||
{
|
{
|
||||||
detectedResolutions[i++] = s;
|
detectedResolutions[i++] = s;
|
||||||
|
|
|
@ -292,14 +292,17 @@ qboolean R_GetModeInfo( int *width, int *height, float *windowAspect, int mode )
|
||||||
vidmode_t *vm;
|
vidmode_t *vm;
|
||||||
float pixelAspect;
|
float pixelAspect;
|
||||||
|
|
||||||
if ( mode < -1 ) {
|
if ( mode < -2 ) {
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
}
|
||||||
if ( mode >= s_numVidModes ) {
|
if ( mode >= s_numVidModes ) {
|
||||||
return qfalse;
|
return qfalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( mode == -1 ) {
|
if ( mode == -2 ) {
|
||||||
|
// Must set width and height to display size before calling this function!
|
||||||
|
pixelAspect = 1.0f;
|
||||||
|
} else if ( mode == -1 ) {
|
||||||
*width = r_customwidth->integer;
|
*width = r_customwidth->integer;
|
||||||
*height = r_customheight->integer;
|
*height = r_customheight->integer;
|
||||||
pixelAspect = r_customPixelAspect->value;
|
pixelAspect = r_customPixelAspect->value;
|
||||||
|
|
|
@ -248,6 +248,16 @@ static int GLimp_SetMode(int mode, qboolean fullscreen, qboolean noborder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( videoInfo->current_h > 0 ) {
|
||||||
|
glConfig.vidWidth = videoInfo->current_w;
|
||||||
|
glConfig.vidHeight = videoInfo->current_h;
|
||||||
|
} else {
|
||||||
|
glConfig.vidWidth = 480;
|
||||||
|
glConfig.vidHeight = 640;
|
||||||
|
ri.Printf( PRINT_ALL,
|
||||||
|
"Cannot determine display resolution, assuming 640x480\n" );
|
||||||
|
}
|
||||||
|
|
||||||
ri.Printf (PRINT_ALL, "...setting mode %d:", mode );
|
ri.Printf (PRINT_ALL, "...setting mode %d:", mode );
|
||||||
|
|
||||||
if ( !R_GetModeInfo( &glConfig.vidWidth, &glConfig.vidHeight, &glConfig.windowAspect, mode ) )
|
if ( !R_GetModeInfo( &glConfig.vidWidth, &glConfig.vidHeight, &glConfig.windowAspect, mode ) )
|
||||||
|
|
Loading…
Reference in a new issue