在GLFW中,有一个被称为用户指针的东西,我可以用glfwSetWindowUserPointer来设置它。我不知道的是用户指针。这是我的猜测。用户指针是指向使用该窗口的用户的指针。我是对还是错?
首先,它与OpenGL无关。如glfw
前缀所示,该函数来自GLFW。
那个"用户指针"只是一个与窗口相关联的任意指针。你可以读写它,否则GLFW会忽略它。
这是一种向各种GLFW回调传递附加信息的方法。比如说你创建了一个窗口类来包装GLFWwindow
,并希望从GLFW回调中与它的实例交互。然后你可以创建"用户指针"指向它(唯一的替代方法是使它成为一个全局变量)。
大多数使用回调的C库都这样做。通常每个回调都有一个指针,但是GLFW每个窗口都有一个。
c++库不倾向于这样做,因为如果std::function
用于回调,它允许你向回调添加任意状态(例如,它可以使用catpure存储lambas,而函数指针不能)。