mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-20 19:21:46 +00:00
ENGINES: If backend is not capable support opengl in game do not try create opengl renderer
This commit is contained in:
parent
bda199eac4
commit
749c3ec9e1
@ -275,9 +275,13 @@ GfxBase *GrimEngine::createRenderer(int screenW, int screenH) {
|
||||
initGraphics(screenW, screenH, nullptr);
|
||||
}
|
||||
|
||||
#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
|
||||
bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
|
||||
#endif
|
||||
|
||||
#if defined(USE_OPENGL_GAME)
|
||||
// Check the OpenGL context actually supports shaders
|
||||
if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
|
||||
if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
|
||||
matchingRendererType = Graphics::kRendererTypeOpenGL;
|
||||
}
|
||||
#endif
|
||||
@ -289,12 +293,12 @@ GfxBase *GrimEngine::createRenderer(int screenW, int screenH) {
|
||||
|
||||
GfxBase *renderer = nullptr;
|
||||
#if defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
|
||||
if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
|
||||
if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
|
||||
renderer = CreateGfxOpenGLShader();
|
||||
}
|
||||
#endif
|
||||
#if defined(USE_OPENGL_GAME) && !defined(USE_GLES2)
|
||||
if (matchingRendererType == Graphics::kRendererTypeOpenGL) {
|
||||
if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGL) {
|
||||
renderer = CreateGfxOpenGL();
|
||||
}
|
||||
#endif
|
||||
|
@ -209,9 +209,13 @@ Renderer *createRenderer(OSystem *system) {
|
||||
initGraphics(width, height, nullptr);
|
||||
}
|
||||
|
||||
#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
|
||||
bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
|
||||
#endif
|
||||
|
||||
#if defined(USE_OPENGL_GAME)
|
||||
// Check the OpenGL context actually supports shaders
|
||||
if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
|
||||
if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
|
||||
matchingRendererType = Graphics::kRendererTypeOpenGL;
|
||||
}
|
||||
#endif
|
||||
@ -222,12 +226,12 @@ Renderer *createRenderer(OSystem *system) {
|
||||
}
|
||||
|
||||
#if defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
|
||||
if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
|
||||
if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
|
||||
return CreateGfxOpenGLShader(system);
|
||||
}
|
||||
#endif
|
||||
#if defined(USE_OPENGL_GAME) && !defined(USE_GLES2)
|
||||
if (matchingRendererType == Graphics::kRendererTypeOpenGL) {
|
||||
if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGL) {
|
||||
return CreateGfxOpenGL(system);
|
||||
}
|
||||
#endif
|
||||
|
@ -36,16 +36,22 @@ namespace Stark {
|
||||
namespace Gfx {
|
||||
|
||||
Driver *Driver::create() {
|
||||
#if defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
|
||||
Driver *driver = nullptr;
|
||||
#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
|
||||
initGraphics3d(kOriginalWidth, kOriginalHeight);
|
||||
|
||||
if (OpenGLContext.shadersSupported) {
|
||||
return new OpenGLSDriver();
|
||||
} else {
|
||||
error("Your system does not have the required OpenGL capabilities");
|
||||
}
|
||||
#endif // defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
|
||||
bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
|
||||
|
||||
if (backendCapableOpenGL) {
|
||||
if (OpenGLContext.shadersSupported) {
|
||||
driver = new OpenGLSDriver();
|
||||
} else {
|
||||
error("Your system does not have the required OpenGL capabilities");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (driver)
|
||||
return driver;
|
||||
error("No renderers have been found for this game");
|
||||
}
|
||||
|
||||
|
@ -84,6 +84,9 @@
|
||||
#ifdef ENABLE_WME3D
|
||||
#include "graphics/renderer.h"
|
||||
#include "engines/util.h"
|
||||
#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
|
||||
#include "graphics/opengl/context.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace Wintermute {
|
||||
@ -501,16 +504,27 @@ bool BaseGame::initialize2() { // we know whether we are going to be accelerated
|
||||
#ifdef ENABLE_WME3D
|
||||
initGraphics3d(_settings->getResWidth(), _settings->getResHeight());
|
||||
|
||||
#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
|
||||
bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
|
||||
#endif
|
||||
|
||||
Common::String rendererConfig = ConfMan.get("renderer");
|
||||
Graphics::RendererType desiredRendererType = Graphics::parseRendererTypeCode(rendererConfig);
|
||||
|
||||
#if defined(USE_OPENGL_GAME)
|
||||
// Check the OpenGL context actually supports shaders
|
||||
if (backendCapableOpenGL && desiredRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
|
||||
desiredRendererType = Graphics::kRendererTypeOpenGL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
|
||||
if (desiredRendererType == Graphics::kRendererTypeOpenGLShaders) {
|
||||
if (backendCapableOpenGL && desiredRendererType == Graphics::kRendererTypeOpenGLShaders) {
|
||||
_renderer3D = makeOpenGL3DShaderRenderer(this);
|
||||
}
|
||||
#endif // defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
|
||||
#if defined(USE_OPENGL_GAME)
|
||||
if (desiredRendererType == Graphics::kRendererTypeOpenGL) {
|
||||
if (backendCapableOpenGL && desiredRendererType == Graphics::kRendererTypeOpenGL) {
|
||||
_renderer3D = makeOpenGL3DRenderer(this);
|
||||
}
|
||||
#endif // defined(USE_OPENGL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user