diff options
author | kwolekr <kwolekr@minetest.net> | 2015-01-18 13:14:25 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-01-18 13:24:25 -0500 |
commit | 976d0b2caa3f69c0b7c40e98517073e08e87774d (patch) | |
tree | 8af2e586e32eed924e42e8d5aab6a33737fc6a18 /src/main.cpp | |
parent | 44e4f5ab6e20689f7106b957de62a1d7737cb28f (diff) | |
download | minetest-976d0b2caa3f69c0b7c40e98517073e08e87774d.tar.gz minetest-976d0b2caa3f69c0b7c40e98517073e08e87774d.tar.bz2 minetest-976d0b2caa3f69c0b7c40e98517073e08e87774d.zip |
Reorganize supported video driver query mechanisms
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/src/main.cpp b/src/main.cpp index 8c4cab4e4..173050fed 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1998,22 +1998,6 @@ void ClientLauncher::main_menu(MainMenuData *menudata) bool ClientLauncher::create_engine_device(int log_level) { - static const char *driverids[] = { - "null", - "software", - "burningsvideo", - "direct3d8", - "direct3d9", - "opengl" -#ifdef _IRR_COMPILE_WITH_OGLES1_ - ,"ogles1" -#endif -#ifdef _IRR_COMPILE_WITH_OGLES2_ - ,"ogles2" -#endif - ,"invalid" - }; - static const irr::ELOG_LEVEL irr_log_level[5] = { ELL_NONE, ELL_ERROR, @@ -2038,20 +2022,21 @@ bool ClientLauncher::create_engine_device(int log_level) // Determine driver video::E_DRIVER_TYPE driverType = video::EDT_OPENGL; - std::string driverstring = g_settings->get("video_driver"); - for (size_t i = 0; i < sizeof driverids / sizeof driverids[0]; i++) { - if (strcasecmp(driverstring.c_str(), driverids[i]) == 0) { - driverType = (video::E_DRIVER_TYPE) i; - break; - } - - if (strcasecmp("invalid", driverids[i]) == 0) { - errorstream << "WARNING: Invalid video_driver specified;" - << " defaulting to opengl" << std::endl; + std::vector<video::E_DRIVER_TYPE> drivers + = porting::getSupportedVideoDrivers(); + u32 i; + for (i = 0; i != drivers.size(); i++) { + if (!strcasecmp(driverstring.c_str(), + porting::getVideoDriverName(drivers[i]))) { + driverType = drivers[i]; break; } } + if (i == drivers.size()) { + errorstream << "Invalid video_driver specified; " + "defaulting to opengl" << std::endl; + } SIrrlichtCreationParameters params = SIrrlichtCreationParameters(); params.DriverType = driverType; |