C++ OOP中的GLFWwindowsizefun可访问性
有一个函数用于设置回调函数,该函数在调整GLFWwindow的大小后调用。现在的问题是,在我的用户界面库中,我有一个名为C++ OOP中的GLFWwindowsizefun可访问性,c++,c,glfw,C++,C,Glfw,有一个函数用于设置回调函数,该函数在调整GLFWwindow的大小后调用。现在的问题是,在我的用户界面库中,我有一个名为Window的类,它保存成员glfwwindowglfwu\Windowglm::mat4正交项目,在大小回调函数中,我要执行ortho_proj=glm::ortho(0.0f,(float)_width,(float)_height,0.0f,-1.0f,1.0f),但我不能,因为回调函数是静态的,并且不是窗口类的成员,当然不能。所以我知道,访问回调函数中的ortho_pr
Window
的类,它保存成员glfwwindowglfwu\Window代码>glm::mat4正交项目代码>,在大小回调函数中,我要执行ortho_proj=glm::ortho(0.0f,(float)_width,(float)_height,0.0f,-1.0f,1.0f)
,但我不能,因为回调函数是静态的,并且不是窗口
类的成员,当然不能。所以我知道,访问回调函数中的ortho_proj
变量的唯一方法是使变量保持静态,但我不希望这样,因为在这种情况下,我将面临在单个程序中创建多个窗口的问题
这是类定义:
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::
,它就会工作)
那么,是否有任何方法可以访问回调函数中的ortho_proj
变量,或者回调函数可能以某种方式是类成员?或者,如果窗口已调整大小,是否有任何GLFW函数返回布尔值?您可以使用将窗口的指针与GLFW窗口相关联。这样,您就可以从回调中查找窗口
实例,并回调到类中
这是一个经典模式,如果GLFW不支持它,我会非常惊讶。知道她的东西。你想在窗口
类中允许什么样的界面。您希望如何从那里定制它?
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);
}