diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-09-01 17:40:11 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-09-01 17:57:47 +0300 |
commit | 5359b7c20b9ee93989a840e555f0a2102b7bb806 (patch) | |
tree | a95017d22a4f3e2f57be59dd4826f3b823a65656 /src/render | |
parent | 222748a7e0c79225c66485898b913aa60f56cfe2 (diff) | |
download | mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.tar.gz mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.tar.bz2 mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.tar.xz mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.zip |
add SDL2 default render mode.
in this mode SDL using own driver with hardware acceleration.
Diffstat (limited to 'src/render')
-rw-r--r-- | src/render/graphics.h | 3 | ||||
-rw-r--r-- | src/render/renderers.h | 3 | ||||
-rw-r--r-- | src/render/rendererslistsdl.h (renamed from src/render/rendererslist.h) | 40 | ||||
-rw-r--r-- | src/render/rendererslistsdl2.h | 133 | ||||
-rw-r--r-- | src/render/sdl2graphics.cpp | 3 | ||||
-rw-r--r-- | src/render/sdl2graphics.h | 4 |
6 files changed, 169 insertions, 17 deletions
diff --git a/src/render/graphics.h b/src/render/graphics.h index 7dafcbc45..5025709ec 100644 --- a/src/render/graphics.h +++ b/src/render/graphics.h @@ -365,6 +365,9 @@ class Graphics : public gcn::Graphics #ifdef USE_SDL2 void dumpRendererInfo(const char *const str, const SDL_RendererInfo &info); + + virtual void setRendererFlags(const uint32_t flags A_UNUSED) + { } #endif int mWidth; int mHeight; diff --git a/src/render/renderers.h b/src/render/renderers.h index 8922f3d10..f7d58b5e9 100644 --- a/src/render/renderers.h +++ b/src/render/renderers.h @@ -26,11 +26,10 @@ enum RenderType { RENDER_SOFTWARE = 0, -#ifdef USE_OPENGL RENDER_NORMAL_OPENGL = 1, RENDER_SAFE_OPENGL = 2, RENDER_GLES_OPENGL = 3, -#endif + RENDER_SDL2_DEFAULT = 4, RENDER_LAST }; diff --git a/src/render/rendererslist.h b/src/render/rendererslistsdl.h index 6c4e3fd0e..aa68eeb6b 100644 --- a/src/render/rendererslist.h +++ b/src/render/rendererslistsdl.h @@ -20,17 +20,23 @@ #include "utils/gettext.h" -#ifndef RENDER_RENDERERSLIST_H -#define RENDER_RENDERERSLIST_H +#ifndef RENDER_RENDERERSLISTSDL_H +#define RENDER_RENDERERSLISTSDL_H + +#ifdef USE_SDL2 +#include "render/rendererslistsdl2.h" + +#else // USE_SDL2 #ifdef USE_OPENGL #ifdef ANDROID +// defined OPENGL ANDROID // map for index to RenderType const RenderType indexToRender[] = { RENDER_SOFTWARE, - RENDER_GLES_OPENGL, + RENDER_GLES_OPENGL }; const char *OPENGL_NAME[] = @@ -38,7 +44,7 @@ const char *OPENGL_NAME[] = // TRANSLATORS: draw backend N_("Software"), // TRANSLATORS: draw backend - N_("Mobile OpenGL"), + N_("Mobile OpenGL") }; const int renderModesListSize = 2; @@ -46,12 +52,14 @@ const int renderModesListSize = 2; const int renderToIndex[] = { 0, // RENDER_SOFTWARE - 3, // RENDER_GLES_OPENGL - 3, // RENDER_GLES_OPENGL - 3 // RENDER_GLES_OPENGL + 1, // RENDER_NORMAL_OPENGL + 1, // RENDER_SAFE_OPENGL + 1, // RENDER_GLES_OPENGL + 1 // RENDER_SDL2_DEFAULT }; #else // ANDROID +// defined OPENGL // map for index to RenderType const RenderType indexToRender[] = @@ -59,7 +67,7 @@ const RenderType indexToRender[] = RENDER_SOFTWARE, RENDER_NORMAL_OPENGL, RENDER_SAFE_OPENGL, - RENDER_GLES_OPENGL, + RENDER_GLES_OPENGL }; const char *OPENGL_NAME[] = @@ -71,7 +79,7 @@ const char *OPENGL_NAME[] = // TRANSLATORS: draw backend N_("Safe OpenGL"), // TRANSLATORS: draw backend - N_("Mobile OpenGL"), + N_("Mobile OpenGL") }; const int renderModesListSize = 4; @@ -81,12 +89,14 @@ const int renderToIndex[] = 0, // RENDER_SOFTWARE 1, // RENDER_NORMAL_OPENGL 2, // RENDER_SAFE_OPENGL - 3 // RENDER_GLES_OPENGL + 3, // RENDER_GLES_OPENGL + 0 // RENDER_SDL2_DEFAULT }; #endif // ANDROID #else // USE_OPENGL +// no defines // map for index to RenderType const RenderType indexToRender[] = @@ -105,11 +115,13 @@ const int renderModesListSize = 1; const int renderToIndex[] = { 0, // RENDER_SOFTWARE - 0, // RENDER_SOFTWARE - 0, // RENDER_SOFTWARE - 0 // RENDER_SOFTWARE + 0, // RENDER_NORMAL_OPENGL + 0, // RENDER_SAFE_OPENGL + 0, // RENDER_GLES_OPENGL + 0 // RENDER_SDL2_DEFAULT }; #endif // USE_OPENGL -#endif // RENDER_RENDERERSLIST_H +#endif // USE_SDL2 +#endif // RENDER_RENDERERSLISTSDL_H diff --git a/src/render/rendererslistsdl2.h b/src/render/rendererslistsdl2.h new file mode 100644 index 000000000..966b53726 --- /dev/null +++ b/src/render/rendererslistsdl2.h @@ -0,0 +1,133 @@ +/* + * The ManaPlus Client + * Copyright (C) 2013 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * 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 + * 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, see <http://www.gnu.org/licenses/>. + */ + +#include "utils/gettext.h" + +#ifndef RENDER_RENDERERSLISTSDL2_H +#define RENDER_RENDERERSLISTSDL2_H + +#ifdef USE_SDL2 + +#ifdef USE_OPENGL +#ifdef ANDROID +// defined OPENGL ANDROID + +// map for index to RenderType +const RenderType indexToRender[] = +{ + RENDER_SOFTWARE, + RENDER_SDL2_DEFAULT, + RENDER_GLES_OPENGL +}; + +const char *OPENGL_NAME[] = +{ + // TRANSLATORS: draw backend + N_("Software"), + // TRANSLATORS: draw backend + N_("SDL2 default"), + // TRANSLATORS: draw backend + N_("Mobile OpenGL") +}; + +const int renderModesListSize = 3; + +const int renderToIndex[] = +{ + 0, // RENDER_SOFTWARE + 2, // RENDER_NORMAL_OPENGL + 2, // RENDER_SAFE_OPENGL + 2, // RENDER_GLES_OPENGL + 1 // RENDER_SDL2_DEFAULT +}; + +#else // ANDROID +// defined OPENGL + +// map for index to RenderType +const RenderType indexToRender[] = +{ + RENDER_SOFTWARE, + RENDER_SDL2_DEFAULT, + RENDER_NORMAL_OPENGL, + RENDER_SAFE_OPENGL, + RENDER_GLES_OPENGL +}; + +const char *OPENGL_NAME[] = +{ + // TRANSLATORS: draw backend + N_("Software"), + // TRANSLATORS: draw backend + N_("SDL2 default"), + // TRANSLATORS: draw backend + N_("Fast OpenGL"), + // TRANSLATORS: draw backend + N_("Safe OpenGL"), + // TRANSLATORS: draw backend + N_("Mobile OpenGL") +}; + +const int renderModesListSize = 5; + +const int renderToIndex[] = +{ + 0, // RENDER_SOFTWARE + 2, // RENDER_NORMAL_OPENGL + 3, // RENDER_SAFE_OPENGL + 4, // RENDER_GLES_OPENGL + 1 // RENDER_SDL2_DEFAULT +}; + +#endif // ANDROID + +#else // USE_OPENGL +// no defines + +// map for index to RenderType +const RenderType indexToRender[] = +{ + RENDER_SOFTWARE, + RENDER_SDL2_DEFAULT +}; + +const char *OPENGL_NAME[] = +{ + // TRANSLATORS: draw backend + N_("Software"), + // TRANSLATORS: draw backend + N_("SDL2 default") +}; + +const int renderModesListSize = 2; + +const int renderToIndex[] = +{ + 0, // RENDER_SOFTWARE + 0, // RENDER_NORMAL_OPENGL + 0, // RENDER_SAFE_OPENGL + 0, // RENDER_GLES_OPENGL + 1 // RENDER_SDL2_DEFAULT +}; + +#endif // USE_OPENGL + +#endif // USE_SDL2 +#endif // RENDER_RENDERERSLISTSDL2_H diff --git a/src/render/sdl2graphics.cpp b/src/render/sdl2graphics.cpp index 218f2cad7..82ad78198 100644 --- a/src/render/sdl2graphics.cpp +++ b/src/render/sdl2graphics.cpp @@ -70,6 +70,7 @@ static int FakeSDL_RenderCopy(SDL_Renderer *const renderer, SDLGraphics::SDLGraphics() : Graphics(), + mRendererFlags(SDL_RENDERER_SOFTWARE), mOldPixel(0), mOldAlpha(0) { @@ -633,7 +634,7 @@ bool SDLGraphics::setVideoMode(const int w, const int h, const int bpp, mRect.w = w1; mRect.h = h1; - mRenderer = graphicsManager.createRenderer(mWindow, SDL_RENDERER_SOFTWARE); + mRenderer = graphicsManager.createRenderer(mWindow, mRendererFlags); SDLImageHelper::setRenderer(mRenderer); return videoInfo(); } diff --git a/src/render/sdl2graphics.h b/src/render/sdl2graphics.h index f3835e904..383e93540 100644 --- a/src/render/sdl2graphics.h +++ b/src/render/sdl2graphics.h @@ -128,6 +128,9 @@ class SDLGraphics : public Graphics const bool fs, const bool hwaccel, const bool resize, const bool noFrame); + void setRendererFlags(const uint32_t flags) + { mRendererFlags = flags; } + protected: virtual bool drawImage2(const Image *const image, int srcX, int srcY, @@ -135,6 +138,7 @@ class SDLGraphics : public Graphics const int width, const int height, const bool useColor); + uint32_t mRendererFlags; uint32_t mOldPixel; int mOldAlpha; }; |