有一個設置一個回調函數GLFWwindowsizefun一個GLFWwindow的大小後,其被稱爲glfwSetWindowSizeCallback功能。現在的問題是,在我的用戶界面庫我有一個叫Window
類持有會員GLFWwindow glfw_window;
glm::mat4 ortho_proj;
,並在大小回調函數我想做ortho_proj = glm::ortho(0.0f, (float)_width, (float)_height, 0.0f, -1.0f, 1.0f);
,但我不能,因爲回調函數是靜態的,是不是Window
類的成員,AFAIK不是。所以我知道,在回調函數中訪問ortho_proj
變量的唯一方法是將變量設置爲靜態,但我不希望這樣,因爲在那種情況下,我將面臨在單個程序中創建多個窗口的問題。GLFWwindowsizefun無障礙OOP中
這是類定義:
class Window
{
private:
GLFWwindow* glfw_window;
mat4 ortho_proj;
public:
Window(int _width, int _height, const char* _title);
bool update();
void render();
~Window();
};
這是壞回調函數(這是可行的,如果ortho_proj是公共和靜態的,如果我會ortho_proj
前加Window::
)
void window_size_callback(GLFWwindow* _window, int _width, int _height)
{
ortho_proj = ortho(0.0f, (float)_width, (float)_height, 0.0f, -1.0f, 1.0f);
}
那麼在回調函數中有沒有什麼方法可以訪問ortho_proj
變量,或者回調函數可能以某種方式成爲類成員?還是有任何GLFW函數返回一個布爾值,如果窗口已被調整大小?
什麼是你想在'Window'類中允許的接口。您希望如何從那裏定製它? – Shoe