Program Listing for File OpenGLContext.cpp
↰ Return to documentation for file (src/Graphics/RHI/OpenGL/OpenGLContext.cpp)
#include "Ramus/Graphics/RHI/OpenGL/OpenGLContext.hpp"
#include "Ramus/Core/Services/Logger.hpp"
#include <glad/gl.h>
#include <GLFW/glfw3.h>
#define WindowPtr static_cast<GLFWwindow*>(m_nativeWindow)
namespace ramus
{
OpenGLContext::OpenGLContext(void* nativeWindow) : m_nativeWindow(nativeWindow)
{
Logger::GetRendererLogger()->info("OpenGL context passed window: {}", m_nativeWindow);
}
OpenGLContext::~OpenGLContext()
{
Logger::GetRendererLogger()->info("OpenGL context destroyed.");
}
void OpenGLContext::Init()
{
glfwMakeContextCurrent(WindowPtr);
int glVersion = gladLoadGL(glfwGetProcAddress);
if (glVersion == 0)
{
Logger::GetRendererLogger()->critical("gladLoadGL failed!");
throw std::runtime_error("OpenGL context init failed: glad could not load OpenGL functions.");
}
auto* glVersionStr = (const char*)glGetString(GL_VERSION);
Logger::GetRendererLogger()->info("Graphics context init (OpenGL {})", glVersionStr);
}
void OpenGLContext::SwapBuffers()
{
glfwSwapBuffers(WindowPtr);
}
void OpenGLContext::SetVSync(bool enabled)
{
glfwSwapInterval(enabled ? 1 : 0);
}
}