У меня есть эта досадная проблема: когда я создаю SDL_renderer в одном из моих классов, он становится nullptr, но при создании другого в другом классе он функционирует нормально.
Создание рендерера в моем классе Engine работает нормально:
m_window = SDL_CreateWindow("Breakout",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
m_window_width, m_window_height,
SDL_WINDOW_OPENGL);
m_renderer = SDL_CreateRenderer(m_window, -1,
SDL_RENDERER_ACCELERATED);
Создавая рендерер в моем классе DrawManager, рендерер становится nullptr:
bool DrawManager::Initialize(SDL_Window *window, int width, int height) {
m_renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if(m_renderer == nullptr) {
return false;
};
return true;
};
Переменные m_renderer создаются в каждом заголовочном файле соответствующего класса.
Окно, созданное в классе Engine, отправляется в метод Initialize DrawManager, и окно не является nullptr, а только средством визуализации. Оба класса имеют одинаковые включения SDL.
У кого-нибудь есть идеи, что не так с кодом?
Вы хотите рисовать с OpenGL?
Если это так, вам не нужно рендерера. В противном случае, если вы хотите использовать простые функции рисования SDL, попробуйте удалить SDL_WINDOW_OPENGL
флаг от SDL_CreateWindow()
,
Ты звонишь SDL_CreateRenderer
дважды? Если это так, попробуйте вызвать его только один раз и передать указатель.