Improve GL version check
This commit is contained in:
@@ -12,21 +12,14 @@ namespace lime {
|
||||
currentWindow = window;
|
||||
sdlWindow = ((SDLWindow*)window)->sdlWindow;
|
||||
sdlTexture = 0;
|
||||
|
||||
context = SDL_GL_GetCurrentContext ();
|
||||
|
||||
OpenGLBindings::Init ();
|
||||
context = 0;
|
||||
|
||||
width = 0;
|
||||
height = 0;
|
||||
|
||||
int sdlFlags = 0;
|
||||
|
||||
if (context && window->flags & WINDOW_FLAG_HARDWARE) {
|
||||
|
||||
const char* version = (const char*)glGetString (GL_VERSION);
|
||||
|
||||
// TODO: Check for GLES or GL2 and above
|
||||
if (window->flags & WINDOW_FLAG_HARDWARE) {
|
||||
|
||||
sdlFlags |= SDL_RENDERER_ACCELERATED;
|
||||
|
||||
@@ -44,7 +37,44 @@ namespace lime {
|
||||
|
||||
sdlRenderer = SDL_CreateRenderer (sdlWindow, -1, sdlFlags);
|
||||
|
||||
if (!sdlRenderer && (sdlFlags & SDL_RENDERER_ACCELERATED)) {
|
||||
if (sdlFlags & SDL_RENDERER_ACCELERATED) {
|
||||
|
||||
if (sdlRenderer) {
|
||||
|
||||
bool valid = false;
|
||||
context = SDL_GL_GetCurrentContext ();
|
||||
|
||||
if (context) {
|
||||
|
||||
OpenGLBindings::Init ();
|
||||
|
||||
int version = 0;
|
||||
glGetIntegerv (GL_MAJOR_VERSION, &version);
|
||||
|
||||
if (version == 0) {
|
||||
|
||||
version = (int)sscanf ((const char*)glGetString (GL_VERSION), "%f", &version);
|
||||
|
||||
}
|
||||
|
||||
if (version >= 2 || strstr ((const char*)glGetString (GL_VERSION), "OpenGL ES")) {
|
||||
|
||||
valid = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!valid) {
|
||||
|
||||
SDL_DestroyRenderer (sdlRenderer);
|
||||
sdlRenderer = 0;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!sdlRenderer) {
|
||||
|
||||
sdlFlags &= ~SDL_RENDERER_ACCELERATED;
|
||||
sdlFlags &= ~SDL_RENDERER_PRESENTVSYNC;
|
||||
@@ -55,6 +85,8 @@ namespace lime {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!sdlRenderer) {
|
||||
|
||||
printf ("Could not create SDL renderer: %s.\n", SDL_GetError ());
|
||||
|
||||
Reference in New Issue
Block a user