diff --git a/minetest.conf.example b/minetest.conf.example index eb0ac63d9..4b989e10a 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -62,6 +62,12 @@ # Initial window size #screenW = 800 #screenH = 600 +#fullscreen = false +#fullscreen_bpp = 24 +# Experimental option, might cause visible spaces between blocks +# when set to higher number than 0 +#fsaa = 0 +#vsync = false # Address to connect to (#blank = start local server) #address = # Enable random user input, for testing diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 8f1b8b6f0..9afd316e5 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -74,6 +74,10 @@ void set_default_settings(Settings *settings) settings->setDefault("viewing_range_nodes_min", "35"); settings->setDefault("screenW", "800"); settings->setDefault("screenH", "600"); + settings->setDefault("fullscreen", "false"); + settings->setDefault("fullscreen_bpp", "24"); + settings->setDefault("fsaa", "0"); + settings->setDefault("vsync", "false"); settings->setDefault("address", ""); settings->setDefault("random_input", "false"); settings->setDefault("client_unload_unused_data_timeout", "600"); diff --git a/src/main.cpp b/src/main.cpp index 8a6504194..8ec4c2632 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1213,10 +1213,16 @@ int main(int argc, char *argv[]) // Resolution selection - bool fullscreen = false; + bool fullscreen = g_settings->getBool("fullscreen"); u16 screenW = g_settings->getU16("screenW"); u16 screenH = g_settings->getU16("screenH"); + // bpp, fsaa, vsync + + bool vsync = g_settings->getBool("vsync"); + u16 bits = g_settings->getU16("fullscreen_bpp"); + u16 fsaa = g_settings->getU16("fsaa"); + // Determine driver video::E_DRIVER_TYPE driverType; @@ -1249,9 +1255,18 @@ int main(int argc, char *argv[]) MyEventReceiver receiver; IrrlichtDevice *device; - device = createDevice(driverType, - core::dimension2d(screenW, screenH), - 16, fullscreen, false, false, &receiver); + + SIrrlichtCreationParameters params = SIrrlichtCreationParameters(); + params.DriverType = driverType; + params.WindowSize = core::dimension2d(screenW, screenH); + params.Bits = bits; + params.AntiAlias = fsaa; + params.Fullscreen = fullscreen; + params.Stencilbuffer = false; + params.Vsync = vsync; + params.EventReceiver = &receiver; + + device = createDeviceEx(params); if (device == 0) return 1; // could not create selected driver.