diff options
-rw-r--r-- | src/actions/actions.cpp | 2 | ||||
-rw-r--r-- | src/graphicsmanager.cpp | 114 | ||||
-rw-r--r-- | src/render/mobileopenglgraphics.cpp | 4 | ||||
-rw-r--r-- | src/render/mobileopenglgraphics.h | 4 | ||||
-rw-r--r-- | src/render/modernopenglgraphics.cpp | 4 | ||||
-rw-r--r-- | src/render/modernopenglgraphics.h | 4 | ||||
-rw-r--r-- | src/render/normalopenglgraphics.cpp | 4 | ||||
-rw-r--r-- | src/render/normalopenglgraphics.h | 2 | ||||
-rw-r--r-- | src/resources/openglimagehelper.cpp | 26 |
9 files changed, 104 insertions, 60 deletions
diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp index 9e1d055ac..465200a5b 100644 --- a/src/actions/actions.cpp +++ b/src/actions/actions.cpp @@ -1366,7 +1366,7 @@ impHandler(dumpTests) impHandler0(dumpOGL) { -#if defined USE_OPENGL && !defined ANDROID +#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) NormalOpenGLGraphics::dumpSettings(); #endif return true; diff --git a/src/graphicsmanager.cpp b/src/graphicsmanager.cpp index d3b5a8c55..90b1c5a69 100644 --- a/src/graphicsmanager.cpp +++ b/src/graphicsmanager.cpp @@ -166,7 +166,7 @@ int GraphicsManager::detectGraphics() logger->log1("enable opengl mode"); int textureSampler = 0; int compressTextures = 0; -#ifndef ANDROID +#if !defined(ANDROID) && !defined(__native_client__) mainGraphics = new NormalOpenGLGraphics; #endif SDL_Window *const window = createWindow(100, 100, 0, @@ -249,6 +249,67 @@ int GraphicsManager::detectGraphics() | (1024 * textureSampler) | (2048 * compressTextures); } +#ifdef USE_SDL2 +#define RENDER_SOFTWARE_INIT \ + imageHelper = new SDL2SoftwareImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new SDL2SoftwareGraphics; +#define RENDER_SDL2_DEFAULT_INIT \ + imageHelper = new SDLImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new SDLGraphics; \ + mainGraphics->setRendererFlags(SDL_RENDERER_ACCELERATED); \ + mUseTextureSampler = false; +#else // USE_SDL2 +#define RENDER_SOFTWARE_INIT \ + imageHelper = new SDLImageHelper; \ + surfaceImageHelper = imageHelper; \ + mainGraphics = new SDLGraphics; +#define RENDER_SDL2_DEFAULT_INIT +#endif // USE_SDL2 + +#if defined(ANDROID) || defined(__native_client__) +#define RENDER_NORMAL_OPENGL_INIT +#define RENDER_MODERN_OPENGL_INIT +#else // defined(ANDROID) || defined(__native_client__) +#define RENDER_NORMAL_OPENGL_INIT \ + imageHelper = new OpenGLImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new NormalOpenGLGraphics; \ + mUseTextureSampler = true; +#define RENDER_MODERN_OPENGL_INIT \ + imageHelper = new OpenGLImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new ModernOpenGLGraphics; \ + mUseTextureSampler = true; +#endif // defined(ANDROID) || defined(__native_client__) + +#if defined(ANDROID) +#define RENDER_SAFE_OPENGL_INIT +#define RENDER_GLES2_OPENGL_INIT +#else // defined(ANDROID) +#define RENDER_SAFE_OPENGL_INIT \ + imageHelper = new OpenGLImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new SafeOpenGLGraphics; \ + mUseTextureSampler = false; +#define RENDER_GLES2_OPENGL_INIT \ + imageHelper = new OpenGLImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new MobileOpenGL2Graphics; \ + mUseTextureSampler = false; +#endif // defined(ANDROID) + +#if defined(__native_client__) +#define RENDER_GLES_OPENGL_INIT +#else // defined(__native_client__) +#define RENDER_GLES_OPENGL_INIT \ + imageHelper = new OpenGLImageHelper; \ + surfaceImageHelper = new SurfaceImageHelper; \ + mainGraphics = new MobileOpenGLGraphics; \ + mUseTextureSampler = false; +#endif // defined(__native_client__) + void GraphicsManager::createRenderers() { RenderType useOpenGL = RENDER_SOFTWARE; @@ -272,64 +333,31 @@ void GraphicsManager::createRenderers() switch (useOpenGL) { case RENDER_SOFTWARE: -#ifdef USE_SDL2 - imageHelper = new SDL2SoftwareImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new SDL2SoftwareGraphics; -#else - imageHelper = new SDLImageHelper; - surfaceImageHelper = imageHelper; - mainGraphics = new SDLGraphics; -#endif + RENDER_SOFTWARE_INIT mUseTextureSampler = false; break; - case RENDER_NORMAL_OPENGL: -#ifndef USE_SDL2 - case RENDER_SDL2_DEFAULT: -#endif case RENDER_LAST: case RENDER_NULL: default: -#ifndef ANDROID - imageHelper = new OpenGLImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new NormalOpenGLGraphics; - mUseTextureSampler = true; + break; + case RENDER_NORMAL_OPENGL: + RENDER_NORMAL_OPENGL_INIT break; case RENDER_SAFE_OPENGL: - imageHelper = new OpenGLImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new SafeOpenGLGraphics; - mUseTextureSampler = false; + RENDER_SAFE_OPENGL_INIT break; case RENDER_MODERN_OPENGL: - imageHelper = new OpenGLImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new ModernOpenGLGraphics; - mUseTextureSampler = true; + RENDER_MODERN_OPENGL_INIT break; case RENDER_GLES2_OPENGL: - imageHelper = new OpenGLImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new MobileOpenGL2Graphics; - mUseTextureSampler = false; + RENDER_GLES2_OPENGL_INIT break; -#endif case RENDER_GLES_OPENGL: - imageHelper = new OpenGLImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new MobileOpenGLGraphics; - mUseTextureSampler = false; + RENDER_GLES_OPENGL_INIT break; -#ifdef USE_SDL2 case RENDER_SDL2_DEFAULT: - imageHelper = new SDLImageHelper; - surfaceImageHelper = new SurfaceImageHelper; - mainGraphics = new SDLGraphics; - mainGraphics->setRendererFlags(SDL_RENDERER_ACCELERATED); - mUseTextureSampler = false; + RENDER_SDL2_DEFAULT_INIT break; -#endif }; mUseAtlases = (useOpenGL == RENDER_NORMAL_OPENGL || useOpenGL == RENDER_SAFE_OPENGL || diff --git a/src/render/mobileopenglgraphics.cpp b/src/render/mobileopenglgraphics.cpp index 995a36c84..4eecfa232 100644 --- a/src/render/mobileopenglgraphics.cpp +++ b/src/render/mobileopenglgraphics.cpp @@ -20,7 +20,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifdef USE_OPENGL +#if defined(USE_OPENGL) && !defined(__native_client__) #include "render/mobileopenglgraphics.h" @@ -1379,4 +1379,4 @@ void MobileOpenGLGraphics::debugBindTexture(const Image *const image A_UNUSED) } #endif -#endif // USE_OPENGL +#endif // defined(USE_OPENGL) && !defined(__native_client__) diff --git a/src/render/mobileopenglgraphics.h b/src/render/mobileopenglgraphics.h index 5011bae9e..ff722671e 100644 --- a/src/render/mobileopenglgraphics.h +++ b/src/render/mobileopenglgraphics.h @@ -23,7 +23,7 @@ #ifndef RENDER_MOBILEOPENGLGRAPHICS_H #define RENDER_MOBILEOPENGLGRAPHICS_H -#ifdef USE_OPENGL +#if defined(USE_OPENGL) && !defined(__native_client__) #include "localconsts.h" #include "render/graphics.h" @@ -96,6 +96,6 @@ class MobileOpenGLGraphics final : public Graphics #endif FBOInfo mFbo; }; -#endif +#endif // defined(USE_OPENGL) && !defined(__native_client__) #endif // RENDER_MOBILEOPENGLGRAPHICS_H diff --git a/src/render/modernopenglgraphics.cpp b/src/render/modernopenglgraphics.cpp index 1e07810ed..f9fb6c25f 100644 --- a/src/render/modernopenglgraphics.cpp +++ b/src/render/modernopenglgraphics.cpp @@ -20,7 +20,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#if defined USE_OPENGL && !defined ANDROID +#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) #include "render/modernopenglgraphics.h" @@ -1372,4 +1372,4 @@ void ModernOpenGLGraphics::debugBindTexture(const Image *const image A_UNUSED) } #endif -#endif // USE_OPENGL +#endif // defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) diff --git a/src/render/modernopenglgraphics.h b/src/render/modernopenglgraphics.h index b1ee15a8f..5bdb70ea6 100644 --- a/src/render/modernopenglgraphics.h +++ b/src/render/modernopenglgraphics.h @@ -23,7 +23,7 @@ #ifndef RENDER_MODERNOPENGLGRAPHICS_H #define RENDER_MODERNOPENGLGRAPHICS_H -#if defined USE_OPENGL && !defined ANDROID +#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) #include "localconsts.h" #include "render/graphics.h" @@ -135,6 +135,6 @@ class ModernOpenGLGraphics final : public Graphics #endif FBOInfo mFbo; }; -#endif +#endif // defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) #endif // RENDER_MODERNOPENGLGRAPHICS_H diff --git a/src/render/normalopenglgraphics.cpp b/src/render/normalopenglgraphics.cpp index eb5609b19..2c28f4a79 100644 --- a/src/render/normalopenglgraphics.cpp +++ b/src/render/normalopenglgraphics.cpp @@ -20,7 +20,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#if defined USE_OPENGL && !defined ANDROID +#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) #include "render/normalopenglgraphics.h" @@ -1725,4 +1725,4 @@ void NormalOpenGLGraphics::debugBindTexture(const Image *const image A_UNUSED) } #endif -#endif // USE_OPENGL +#endif // defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) diff --git a/src/render/normalopenglgraphics.h b/src/render/normalopenglgraphics.h index 7d73223b6..fa8c8456a 100644 --- a/src/render/normalopenglgraphics.h +++ b/src/render/normalopenglgraphics.h @@ -23,7 +23,7 @@ #ifndef RENDER_NORMALOPENGLGRAPHICS_H #define RENDER_NORMALOPENGLGRAPHICS_H -#if defined USE_OPENGL && !defined ANDROID +#if defined USE_OPENGL && !defined ANDROID && !defined(__native_client__) #include "localconsts.h" #include "render/graphics.h" diff --git a/src/resources/openglimagehelper.cpp b/src/resources/openglimagehelper.cpp index d76336ced..0d98fcfe7 100644 --- a/src/resources/openglimagehelper.cpp +++ b/src/resources/openglimagehelper.cpp @@ -249,27 +249,43 @@ void OpenGLImageHelper::bindTexture(const GLuint texture) { switch (mUseOpenGL) { -#ifndef ANDROID +#ifdef ANDROID case RENDER_NORMAL_OPENGL: - NormalOpenGLGraphics::bindTexture(mTextureType, texture); + case RENDER_SAFE_OPENGL: + case RENDER_MODERN_OPENGL: + case RENDER_GLES2_OPENGL: + break; + case RENDER_GLES_OPENGL: + MobileOpenGLGraphics::bindTexture(mTextureType, texture); break; +#elif defined(__native_client__) + case RENDER_NORMAL_OPENGL: case RENDER_MODERN_OPENGL: - ModernOpenGLGraphics::bindTexture(mTextureType, texture); + case RENDER_GLES_OPENGL: break; case RENDER_SAFE_OPENGL: SafeOpenGLGraphics::bindTexture(mTextureType, texture); break; + case RENDER_GLES2_OPENGL: + MobileOpenGL2Graphics::bindTexture(mTextureType, texture); + break; #else case RENDER_NORMAL_OPENGL: - case RENDER_SAFE_OPENGL: + NormalOpenGLGraphics::bindTexture(mTextureType, texture); + break; case RENDER_MODERN_OPENGL: -#endif + ModernOpenGLGraphics::bindTexture(mTextureType, texture); + break; + case RENDER_SAFE_OPENGL: + SafeOpenGLGraphics::bindTexture(mTextureType, texture); + break; case RENDER_GLES_OPENGL: MobileOpenGLGraphics::bindTexture(mTextureType, texture); break; case RENDER_GLES2_OPENGL: MobileOpenGL2Graphics::bindTexture(mTextureType, texture); break; +#endif case RENDER_SOFTWARE: case RENDER_SDL2_DEFAULT: case RENDER_NULL: |