|
|
|
|
@ -111,6 +111,46 @@ bool Sdl2Application::tryCreateContext(const Configuration& configuration) {
|
|
|
|
|
|
|
|
|
|
/** @todo Remove when Emscripten has proper SDL2 support */ |
|
|
|
|
#ifndef CORRADE_TARGET_EMSCRIPTEN |
|
|
|
|
|
|
|
|
|
#ifdef __APPLE__ |
|
|
|
|
|
|
|
|
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); |
|
|
|
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); |
|
|
|
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); |
|
|
|
|
|
|
|
|
|
if(!(window = SDL_CreateWindow(configuration.title().data(), |
|
|
|
|
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, |
|
|
|
|
configuration.size().x(), configuration.size().y(), |
|
|
|
|
SDL_WINDOW_OPENGL|flags))){ |
|
|
|
|
Error() << "Platform::Sdl2Application::tryCreateContext(): cannot create core window:" << SDL_GetError(); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!(context = SDL_GL_CreateContext(window))){ |
|
|
|
|
Error() << "Platform::Sdl2Application::tryCreateContext(): cannot create core context:" << SDL_GetError() << " falling back to compatibility context."; |
|
|
|
|
SDL_DestroyWindow(window); |
|
|
|
|
|
|
|
|
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); |
|
|
|
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); |
|
|
|
|
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); |
|
|
|
|
|
|
|
|
|
if(!(window = SDL_CreateWindow(configuration.title().data(), |
|
|
|
|
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, |
|
|
|
|
configuration.size().x(), configuration.size().y(), |
|
|
|
|
SDL_WINDOW_OPENGL|flags))){ |
|
|
|
|
Error() << "Platform::Sdl2Application::tryCreateContext(): cannot create window:" << SDL_GetError(); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(!(context = SDL_GL_CreateContext(window))){ |
|
|
|
|
Error() << "Platform::Sdl2Application::tryCreateContext(): cannot create compatibility context:" << SDL_GetError(); |
|
|
|
|
SDL_DestroyWindow(window); |
|
|
|
|
window = nullptr; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#else |
|
|
|
|
if(!(window = SDL_CreateWindow(configuration.title().data(), |
|
|
|
|
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, |
|
|
|
|
configuration.size().x(), configuration.size().y(), |
|
|
|
|
@ -125,6 +165,7 @@ bool Sdl2Application::tryCreateContext(const Configuration& configuration) {
|
|
|
|
|
window = nullptr; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
#else |
|
|
|
|
context = SDL_SetVideoMode(configuration.size().x(), configuration.size().y(), 24, SDL_OPENGL|SDL_HWSURFACE|SDL_DOUBLEBUF); |
|
|
|
|
#endif |
|
|
|
|
|