2023-06-03 01:21:37 +00:00
|
|
|
/**
|
|
|
|
* Furnace Tracker - multi-system chiptune tracker
|
|
|
|
* Copyright (C) 2021-2023 tildearrow and contributors
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "gui.h"
|
2023-06-03 06:41:34 +00:00
|
|
|
#include "../ta-log.h"
|
|
|
|
#ifdef HAVE_RENDER_SDL
|
2023-06-03 01:21:37 +00:00
|
|
|
#include "render/renderSDL.h"
|
2023-06-03 06:41:34 +00:00
|
|
|
#endif
|
|
|
|
#ifdef HAVE_RENDER_GL
|
|
|
|
#include "render/renderGL.h"
|
|
|
|
#endif
|
2023-06-12 21:47:54 +00:00
|
|
|
#ifdef HAVE_RENDER_DX11
|
|
|
|
#include "render/renderDX11.h"
|
|
|
|
#endif
|
2023-06-03 06:41:34 +00:00
|
|
|
|
2023-06-03 01:21:37 +00:00
|
|
|
bool FurnaceGUI::initRender() {
|
|
|
|
if (rend!=NULL) return false;
|
2023-06-03 06:41:34 +00:00
|
|
|
|
|
|
|
if (settings.renderBackend=="OpenGL") {
|
|
|
|
renderBackend=GUI_BACKEND_GL;
|
2023-06-12 21:47:54 +00:00
|
|
|
} else if (settings.renderBackend=="DirectX 11") {
|
|
|
|
renderBackend=GUI_BACKEND_DX11;
|
2023-06-03 06:41:34 +00:00
|
|
|
} else if (settings.renderBackend=="SDL") {
|
|
|
|
renderBackend=GUI_BACKEND_SDL;
|
|
|
|
} else {
|
|
|
|
renderBackend=GUI_BACKEND_DEFAULT;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (renderBackend) {
|
|
|
|
#ifdef HAVE_RENDER_GL
|
|
|
|
case GUI_BACKEND_GL:
|
|
|
|
logI("render backend: OpenGL");
|
|
|
|
rend=new FurnaceGUIRenderGL;
|
|
|
|
break;
|
|
|
|
#endif
|
2023-06-12 21:47:54 +00:00
|
|
|
#ifdef HAVE_RENDER_DX11
|
|
|
|
case GUI_BACKEND_DX11:
|
|
|
|
logI("render backend: DirectX 11");
|
|
|
|
rend=new FurnaceGUIRenderDX11;
|
|
|
|
break;
|
|
|
|
#endif
|
2023-06-03 06:41:34 +00:00
|
|
|
#ifdef HAVE_RENDER_SDL
|
|
|
|
case GUI_BACKEND_SDL:
|
|
|
|
logI("render backend: SDL_Renderer");
|
|
|
|
rend=new FurnaceGUIRenderSDL;
|
|
|
|
break;
|
|
|
|
#endif
|
|
|
|
default:
|
|
|
|
logE("invalid render backend!");
|
|
|
|
return false;
|
|
|
|
break;
|
|
|
|
}
|
2023-06-03 01:21:37 +00:00
|
|
|
|
2023-06-03 06:41:34 +00:00
|
|
|
return true;
|
2023-06-03 01:21:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
bool FurnaceGUI::quitRender() {
|
|
|
|
if (rend==NULL) return false;
|
|
|
|
bool ret=rend->quit();
|
|
|
|
delete rend;
|
|
|
|
rend=NULL;
|
|
|
|
return ret;
|
2023-06-03 22:08:20 +00:00
|
|
|
}
|