有一个设置一个回调函数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