Browse Source

engine: ref: try to bruteforce all available renderers if we're failed to load requested one

pull/2/head
Alibek Omarov 4 years ago
parent
commit
766ef84af4
  1. 21
      engine/client/ref_common.c
  2. 1
      engine/common/com_strings.h

21
engine/client/ref_common.c

@ -669,17 +669,20 @@ qboolean R_Init( void ) @@ -669,17 +669,20 @@ qboolean R_Init( void )
if( !(success = R_LoadRenderer( refopt )))
{
// check if we are tried to load default accelearated renderer already
// and if not, load it first
if( Q_strcmp( refopt, DEFAULT_ACCELERATED_RENDERER ) )
{
success = R_LoadRenderer( refopt );
}
int i;
// software renderer is the last chance...
if( !success )
// cycle through renderers that we collected in CollectRendererNames
for( i = 0; i < ref.numRenderers; i++ )
{
success = R_LoadRenderer( DEFAULT_SOFTWARE_RENDERER );
// skip renderer that was requested but failed to load
if( Q_strcmp( refopt, ref.shortNames[i] ))
continue;
success = R_LoadRenderer( ref.shortNames[i] );
// yay, found working one
if( success )
break;
}
}

1
engine/common/com_strings.h

@ -65,6 +65,7 @@ GNU General Public License for more details. @@ -65,6 +65,7 @@ GNU General Public License for more details.
#define XASH_ENGINE_NAME "Xash3D FWGS"
// renderers order is important, software is always a last chance fallback
#define DEFAULT_RENDERERS { "gl", "gles1", "gles2", "gl4es", "soft" }
#define DEFAULT_RENDERERS_LEN 5

Loading…
Cancel
Save