ferx/engine/src/Window.cpp

83 lines
1.5 KiB
C++
Raw Normal View History

#include "Window.h"
Window::Window()
{
Init();
}
Window::Window(const std::string& title, int width, int height)
{
m_Data = WindowData{title, width, height};
Init();
}
Window::~Window()
{
Shutdown();
}
void Window::Init()
{
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW" << std::endl;
return;
}
std::cout << "GLFW Initialized" << std::endl;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
m_Window = glfwCreateWindow(m_Data.Width, m_Data.Height, m_Data.Title.c_str(), nullptr, nullptr);
if (!m_Window) {
std::cerr << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return;
}
glfwMakeContextCurrent(m_Window);
glfwSetFramebufferSizeCallback(m_Window, FramebufferSizeCallback);
}
Window Window::Create()
{
return Window{};
}
Window Window::Create(const std::string& title, int width, int height)
{
return Window{title, width, height};
}
void Window::FramebufferSizeCallback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
GLFWwindow* Window::GetWindow() const
{
return m_Window;
}
const std::string& Window::GetTitle() const
{
return m_Data.Title;
}
int Window::GetWidth() const
{
return m_Data.Width;
}
int Window::GetHeight() const
{
return m_Data.Height;
}
void Window::Shutdown()
{
glfwDestroyWindow(m_Window);
}