2014-08-02 06:21:03 +00:00
|
|
|
// Copyright 2014 Dolphin Emulator Project
|
2015-05-17 23:08:10 +00:00
|
|
|
// Licensed under GPLv2+
|
2014-08-02 06:21:03 +00:00
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
2015-12-21 02:49:49 +00:00
|
|
|
#include <memory>
|
|
|
|
|
2015-09-18 16:40:00 +00:00
|
|
|
#include "Common/GL/GLInterfaceBase.h"
|
2014-08-02 06:21:03 +00:00
|
|
|
|
2016-02-05 16:53:32 +00:00
|
|
|
#if defined(__APPLE__)
|
2015-09-18 16:40:00 +00:00
|
|
|
#include "Common/GL/GLInterface/AGL.h"
|
2014-08-09 13:49:45 +00:00
|
|
|
#elif defined(_WIN32)
|
2015-09-18 16:40:00 +00:00
|
|
|
#include "Common/GL/GLInterface/WGL.h"
|
2014-08-09 13:49:45 +00:00
|
|
|
#elif HAVE_X11
|
2014-08-09 14:31:27 +00:00
|
|
|
#if defined(USE_EGL) && USE_EGL
|
2015-09-18 16:40:00 +00:00
|
|
|
#include "Common/GL/GLInterface/EGLX11.h"
|
2014-08-09 14:31:27 +00:00
|
|
|
#else
|
2015-09-18 16:40:00 +00:00
|
|
|
#include "Common/GL/GLInterface/GLX.h"
|
2014-08-09 14:31:27 +00:00
|
|
|
#endif
|
2016-01-26 13:35:17 +00:00
|
|
|
#elif defined(USE_EGL) && USE_EGL && defined(USE_HEADLESS)
|
|
|
|
#include "Common/GL/GLInterface/EGL.h"
|
2016-02-05 16:53:32 +00:00
|
|
|
#elif ANDROID
|
|
|
|
#include "Common/GL/GLInterface/EGLAndroid.h"
|
2017-02-22 17:21:10 +00:00
|
|
|
#elif defined(__HAIKU__)
|
|
|
|
#include "Common/GL/GLInterface/BGL.h"
|
2014-08-09 13:49:45 +00:00
|
|
|
#else
|
|
|
|
#error Platform doesnt have a GLInterface
|
|
|
|
#endif
|
2014-08-02 06:21:03 +00:00
|
|
|
|
2015-12-21 02:49:49 +00:00
|
|
|
std::unique_ptr<cInterfaceBase> HostGL_CreateGLInterface()
|
2014-08-02 06:21:03 +00:00
|
|
|
{
|
2016-06-24 08:43:46 +00:00
|
|
|
#if defined(__APPLE__)
|
|
|
|
return std::make_unique<cInterfaceAGL>();
|
|
|
|
#elif defined(_WIN32)
|
|
|
|
return std::make_unique<cInterfaceWGL>();
|
|
|
|
#elif defined(USE_EGL) && defined(USE_HEADLESS)
|
|
|
|
return std::make_unique<cInterfaceEGL>();
|
|
|
|
#elif defined(HAVE_X11) && HAVE_X11
|
|
|
|
#if defined(USE_EGL) && USE_EGL
|
|
|
|
return std::make_unique<cInterfaceEGLX11>();
|
|
|
|
#else
|
|
|
|
return std::make_unique<cInterfaceGLX>();
|
|
|
|
#endif
|
|
|
|
#elif ANDROID
|
|
|
|
return std::make_unique<cInterfaceEGLAndroid>();
|
2017-02-22 17:21:10 +00:00
|
|
|
#elif defined(__HAIKU__)
|
|
|
|
return std::make_unique<cInterfaceBGL>();
|
2016-06-24 08:43:46 +00:00
|
|
|
#else
|
|
|
|
return nullptr;
|
|
|
|
#endif
|
2014-08-02 06:21:03 +00:00
|
|
|
}
|