diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-12-01 21:25:37 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-12-01 21:25:37 +0800 |
| commit | d5d65b703244dfcc31228439e91ad0cfebb76456 (patch) | |
| tree | 9550fdf372dc36fc512ba8af73168e1e9aae93bf /src/platform/gui/sdl/OpenGLRenderer.cpp | |
| parent | d54732324827bcfdc75e684b6636c53c109757c4 (diff) | |
| download | cru-d5d65b703244dfcc31228439e91ad0cfebb76456.tar.gz cru-d5d65b703244dfcc31228439e91ad0cfebb76456.tar.bz2 cru-d5d65b703244dfcc31228439e91ad0cfebb76456.zip | |
Move out OpengGLRenderer.
Diffstat (limited to 'src/platform/gui/sdl/OpenGLRenderer.cpp')
| -rw-r--r-- | src/platform/gui/sdl/OpenGLRenderer.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/platform/gui/sdl/OpenGLRenderer.cpp b/src/platform/gui/sdl/OpenGLRenderer.cpp new file mode 100644 index 00000000..7f732cb3 --- /dev/null +++ b/src/platform/gui/sdl/OpenGLRenderer.cpp @@ -0,0 +1,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 |
