aboutsummaryrefslogtreecommitdiff
path: root/src/platform/gui/sdl/OpenGLRenderer.cpp
blob: 7f732cb3b5371b82426af1a549e012f54b15d021 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "cru/platform/gui/sdl/OpenGLRenderer.h"
#include "cru/base/log/Logger.h"
#include "cru/platform/gui/sdl/Window.h"

namespace cru::platform::gui::sdl {
SdlOpenGLRenderer::SdlOpenGLRenderer(SdlWindow* window) {
  assert(window);
  assert(window->GetSdlWindow());

  window_ = window;
  sdl_window_ = window->GetSdlWindow();
  sdl_window_id_ = window->GetSdlWindowId();

  sdl_gl_context_ = SDL_GL_CreateContext(sdl_window_);

  if (!sdl_gl_context_) {
    throw SdlException("Failed to create sdl gl context.");
  }

  CheckSdlReturn(SDL_GL_MakeCurrent(sdl_window_, sdl_gl_context_));

  auto version = gladLoadGLContext(&glad_gl_context_, SDL_GL_GetProcAddress);
  CRU_LOG_TAG_DEBUG("SDL window id {}, openGL version: {}.", sdl_window_id_,
                    version);
}

SdlOpenGLRenderer::~SdlOpenGLRenderer() {
  CheckSdlReturn(SDL_GL_DestroyContext(sdl_gl_context_));
}

}  // namespace cru::platform::gui::sdl