Библиотека SDL2 не может инициализироваться

0

В настоящее время я работаю с SDL2 и GLFW3, чтобы создать игру OpenGL. Инициализация и использование GLFW3 не проблема; Я использую GLFW3 для создания контекста OpenGL, окна, ввода ключа и т.д. И SDL2 для загрузки изображений на SDLS-поверхности, а затем преобразования их в текстуры OpenGL, но, в отличие от GLFW3, SDL2 не инициализируется. Мой код инициализации выглядит следующим образом:

if (!SDL_Init(SDL_INIT_EVERYTHING)) return -1;

Он всегда возвращает -1 и завершает основную функцию. Кто-нибудь знает, почему это может произойти?

  • 0
    Вы должны сообщить нам больше информации, иначе кто-нибудь попытается угадать вашу проблему
  • 0
    Вы можете перечислить свои собственные коды ошибок, чтобы избежать возврата 0 при ошибке путаницы.
Теги:
opengl
sdl
glfw

1 ответ

3
Лучший ответ

Проблема

Проблема не в SDL. SDL фактически инициализирует полностью штраф. Проблема заключается в том, как вы проверяете, удалось ли выполнить инициализацию. Взгляните на документацию для SDL_Init()

Возвращает 0 при успешном завершении или отрицательный код ошибки при ошибке; вызовите SDL_GetError() для получения дополнительной информации.

В коде кода

if (!SDL_Init(SDL_INIT_EVERYTHING)) return -1;

В том if, if SDL_Init(SDL_INIT_EVERYTHING) вернет 0, что оценивается как false но все равно означает, что SDL был успешно инициализирован. ! впереди, означает все, if будет оцениваться как true, и -1 будет возвращен.

Решение

Лучшее решение состоит в том, чтобы проверить, равно ли оно 0 и если оно сбой, для печати ошибки используется SDL_GetError().

if ( SDL_Init(SDL_INIT_EVERYTHING) != 0 )
{
    std::cout << "Error : " << SDL_GetError() << std::endl;
    return -1;
}
  • 0
    Вау, это сработало! Большое спасибо!
  • 0
    @DocCoock Рад быть любой помощи. Пожалуйста, примите ответ, чтобы другие люди с такой же проблемой увидели его.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню