当前位置: 首页 > 知识库问答 >
问题:

OOP中的GLFWwindowsizefun可访问性

归鸿朗
2023-03-14

有一个glfwSetWindowSizeCallback函数,用于设置回调函数GLFWWindowsizeFun,该函数在GLFW窗口调整大小后调用。现在的问题是,在我的用户界面库中,我有一个名为Windows的类,它包含成员GLFWwindowsglfw_window;glm::mat4ortho_proj;,在大小回调函数中,我想做ortho_proj=glm::正交(0.0f,(浮动)_width,(浮动)_height,0.0f,-1.0f,1.0f);,但我不能,因为回调函数是静态的,不是Windows类的成员,和AFAIK它不可能是。所以我所知道的访问回调函数中的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::,它就会工作)

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函数返回布尔值?

共有1个答案

景永望
2023-03-14

您可以使用glfwSetWindowUserPointer()窗口指针与GLFW窗口相关联。这样,您就可以从回调中查找窗口实例,并回调到类中。

这是一个经典的模式,如果GLFW不支持它,我会非常惊讶。@elmindreda知道她的东西。

 类似资料:
  • JAVA访问修饰符的可访问性 公众 在 同一班级 同一套餐 子类 宇宙/其他软件包 我在互联网上寻找这些问题的答案,因为我有多个答案。一个视频说未声明的访问修饰符是公共的,而我看到另一个书面来源说未声明的访问修饰符在子类和其他包中没有限制。试图确认哪个是真的。

  • 我正在实现一个,用户可以在其中向左滑动以从列表中删除项目。 我希望我的应用程序是可访问的,我想知道是否有可能在对讲中以某种方式向用户宣布他需要刷卡,同时我也想知道我是否能捕捉到这个刷卡手势。 先谢谢你, 佩德罗

  • 我有这个应用程序与WebView显示HTML内容。 在我做了一些相当大的更改之后,对讲的可访问性出现了一些“问题”,特别是文本到语音和触摸探索,仅在4.4设备上(不在5.0上)。 触摸一段(段落)文本有时会起作用,但有时会产生点击声,没有输出,文本也不会像应该的那样用选择矩形突出显示。 在5.0上,一切都很好:触摸一段文本会在其周围绘制一个选择,文本就会被说出。 我知道4.4上的回归与我的一些更改

  • 我在让TalkBack使用Web视图时遇到问题(在Android 4.4.2上使用Nexus 5进行测试)。我读到TalkBack支持被添加到Android JellyBean发布前后的Web视图中,方法是检查标题为“增强Web可访问性”的首选项。我无法在系统设置中找到此首选项。 在我们的应用程序中,专注于Web视图只是读取“WebView”,并且不提供其他选项。我已经确定并调用了在Web视图上。

  • 我在使用网络视图(使用Android 5.1上的Nexus 9进行测试)时遇到了一些问题。我读到,在Android JellyBean发布前后,通过检查名为“增强网络可访问性”的首选项,向网络视图添加了对讲支持。我在系统设置中找不到这个首选项。 在我们的应用程序中,专注于Web视图只是读取“WebView”,并且不提供其他选项。 TalkBack是否在KitKat中删除了对Web视图的支持?如果没

  • Jquery Mobile 是基于标准的,系统化的html构建的,使得页面能够在最广范围的设备上得到支持。对于A级的浏览器,许多Jquery Mobile组件,比"焦点管理","键盘导航"等都能支持,其他可以详细参加W3C的WAI-ARIA说明. 通过运用这些技术,我致力于使得通过Jquery Mobile开发的web产品拥有最好的可访问性,对于伤残人士,例如盲人,也可以用读屏软件,例如iphon