feat: add window resize support
Added width/height tracking to the window class via a GLFW resize callback. The callback stores the current size and forwards it to a user-provided std::function. Added context::set_size() to update the GL viewport when the window is resized. Changed scene::render() to accept (int width, int height) parameters so scenes can compute the correct aspect ratio for their projection matrix instead of hardcoding 1280/720. Fixed parameter shadowing in resize_callback_impl (glfw_window instead of window).
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
#define GLFW_INCLUDE_NONE
|
||||
@@ -19,13 +20,22 @@ public:
|
||||
auto raw() const -> GLFWwindow*;
|
||||
auto stop() -> void;
|
||||
auto screenshot(std::string filepath = "screenshot.png") const -> bool;
|
||||
auto width() const -> int;
|
||||
auto height() const -> int;
|
||||
|
||||
using resize_callback = std::function<void(int width, int height)>;
|
||||
auto on_resize(resize_callback cb) -> void;
|
||||
|
||||
private:
|
||||
GLFWwindow* m_window = nullptr;
|
||||
int m_width = 0;
|
||||
int m_height = 0;
|
||||
resize_callback m_resize_cb;
|
||||
bool m_glfw_initialized = false;
|
||||
|
||||
static auto init_glfw() -> bool;
|
||||
static auto terminate_glfw() -> void;
|
||||
static auto resize_callback_impl(GLFWwindow* glfw_window, int width, int height) -> void;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user