From 976d0b2caa3f69c0b7c40e98517073e08e87774d Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sun, 18 Jan 2015 13:14:25 -0500 Subject: Reorganize supported video driver query mechanisms --- src/porting.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 3 deletions(-) (limited to 'src/porting.cpp') diff --git a/src/porting.cpp b/src/porting.cpp index 885b36e21..584d2e2a2 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -549,16 +549,20 @@ void initializePaths() #endif // RUN_IN_PLACE } -static irr::IrrlichtDevice* device; +static irr::IrrlichtDevice *device; -void initIrrlicht(irr::IrrlichtDevice * _device) { - device = _device; +void initIrrlicht(irr::IrrlichtDevice *device_) +{ + device = device_; } void setXorgClassHint(const video::SExposedVideoData &video_data, const std::string &name) { #ifdef XORG_USED + if (video_data.OpenGLLinux.X11Display == NULL) + return; + XClassHint *classhint = XAllocClassHint(); classhint->res_name = (char *)name.c_str(); classhint->res_class = (char *)name.c_str(); @@ -575,6 +579,68 @@ v2u32 getWindowSize() return device->getVideoDriver()->getScreenSize(); } + +std::vector > getVideoModes() +{ + std::vector > mlist; + video::IVideoModeList *modelist = device->getVideoModeList(); + + u32 num_modes = modelist->getVideoModeCount(); + for (u32 i = 0; i != num_modes; i++) { + core::dimension2d mode_res = modelist->getVideoModeResolution(i); + s32 mode_depth = modelist->getVideoModeDepth(i); + mlist.push_back(core::vector3d(mode_res.Width, mode_res.Height, mode_depth)); + } + + return mlist; +} + +std::vector getSupportedVideoDrivers() +{ + std::vector drivers; + + for (int i = 0; i != irr::video::EDT_COUNT; i++) { + if (irr::IrrlichtDevice::isDriverSupported((irr::video::E_DRIVER_TYPE)i)) + drivers.push_back((irr::video::E_DRIVER_TYPE)i); + } + + return drivers; +} + +const char *getVideoDriverName(irr::video::E_DRIVER_TYPE type) +{ + static const char *driver_ids[] = { + "null", + "software", + "burningsvideo", + "direct3d8", + "direct3d9", + "opengl", + "ogles1", + "ogles2", + }; + + return driver_ids[type]; +} + + +const char *getVideoDriverFriendlyName(irr::video::E_DRIVER_TYPE type) +{ + static const char *driver_names[] = { + "NULL Driver", + "Software Renderer", + "Burning's Video", + "Direct3D 8", + "Direct3D 9", + "OpenGL", + "OpenGL ES1", + "OpenGL ES2", + }; + + return driver_names[type]; +} + + #ifndef __ANDROID__ #ifdef XORG_USED float getDisplayDensity() -- cgit v1.2.3