@@ -74,20 +74,28 @@ window::window(const std::string& title,
7474
7575 // try using the default
7676 // if that fails, try opengl
77+ // and if that fails, try software
7778 PLAIN_LOG << " Available renderers: " << utils::join (video::get_available_renderers (), " " );
7879 if (!SDL_CreateRendererWithProperties (props)) {
79- PLAIN_LOG << " Failed to create default renderer, checking for opengl " ;
80+ PLAIN_LOG << " Trying opengl renderer after failing to create default renderer with error: " << SDL_GetError () ;
8081
8182 if (utils::contains (video::get_available_renderers (), " opengl" )) {
8283 SDL_SetHint (SDL_HINT_RENDER_DRIVER , " opengl" );
8384
8485 if (!SDL_CreateRendererWithProperties (props)) {
85- throw exception (" Failed to create an opengl SDL_Renderer object as a fallback." , true );
86+ PLAIN_LOG << " Trying software renderer after failing to create opengl renderer with error: " << SDL_GetError ();
87+
88+ if (utils::contains (video::get_available_renderers (), " software" )) {
89+ SDL_SetHint (SDL_HINT_RENDER_DRIVER , " software" );
90+
91+ if (!SDL_CreateRendererWithProperties (props)) {
92+ throw exception (" Failed to create software renderer." , true );
93+ }
94+ }
8695 }
8796
8897 PLAIN_LOG << " Failed to create default renderer but created fallback opengl renderer" ;
8998 } else {
90- PLAIN_LOG << " Available renderers: " << utils::join (video::get_available_renderers (), " " );
9199 throw exception (" Failed to create default renderer and opengl fallback isn't supported." , true );
92100 }
93101 }
0 commit comments