3

在查看 GLFW 参考资料时,我遇到了glfwGetWindowUserPointer函数(和glfwSetWindowUserPointer函数)。在参考文献中,它对用户指针进行了以下说明:

每个窗口都有一个用户指针,可以使用 glfwSetWindowUserPointer 设置并使用 glfwGetWindowUserPointer 获取。这可以用于您需要的任何目的,并且在窗口的整个生命周期内都不会被 GLFW 修改。

现在我想知道人们可以出于什么目的使用它?

4

1 回答 1

7

我不会把这个答案归功于这个答案,因为这不是我的答案,而是GLFW 论坛上其他人的答案。

UserData 字段是 C API 中相当常见的范例,它允许用户从回调中访问上下文数据,而无需使所有内容都全局化。本质上,它允许您将与您的程序相关的任意数据段与 glfw 窗口相关联。

例如,如果您尝试在遵循面向对象设计的程序中使用 glfw,您可以使用此指针来存储处理特定窗口的实例的地址,并转发回调(必须是静态函数,因为 API 的工作方式)到适当的成员函数。

于 2019-03-16T09:42:42.150 回答