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