SDL2 — проверить, создан ли контекст OpenGL

Я создаю приложение с использованием SDL2 & OpenGL, и он отлично работал на 3 разных компьютерах. Но на другом компьютере (обновленный Arch Linux) это не так, и он вылетает с этой ошибкой:

OpenGL context already created

Итак, мой вопрос: как я могу проверить, был ли контекст OpenGL уже создан? И потом, если он уже создан, как мне получить ручку для него?

Если я не могу сделать это, как мне обойти эту проблему?

6

Решение

SDL2 делает не фактически создайте контекст OpenGL, не спрашивая его. Однако, если вы попросите его создать контекст OpenGL, когда OpenGL вообще не работает, SDL2 захочет, эм, немного фристайл. (Фактическая причина в том, что он плохо выполняет проверку ошибок, поэтому, если X не удается создать контекст OpenGL, он предполагает, что это потому, что контекст уже создан)

Итак, чтобы ответить на третий вопрос («как мне обойти эту проблему»), вы должны исправить OpenGL, прежде чем пытаться его использовать. Цифры, верно?

Чтобы ответить на первый и второй, ну, я не знаю ни одного вызова API, но вы можете сделать это немного по-другому:

SDL_Window* window = NULL;
SDL_GLContext* context = NULL; // NOTE: This is a pointer!

...

int main(int argc, char** argv) {
// Stuff here, initialize 'window'

*context = SDL_GL_CreateContext(window);

// More stuff here

if (context) {
// context is initialized!! yay!
}

return 2; // Just to confuse people a bit =P
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]