如果我要在GLFW中设置一个回调函数,那就说
glfwSetCursorPosCallback(window, mouse);
检索光标位置最明显的方法是
vec2 m;
void mouse (GLFWwindow* window, GLdouble x, GLdouble y)
{
m = vec2 (x, y);
}
但是,我更愿意不使用全局变量。可以吗?
答案 0 :(得分:2)
您可以将用户指针与GLFWindow
相关联。请参阅glfwSetWindowUserPointer
。
GLFWWindow
对象检索指针
struct MyWindowData
{
GLdouble x;
GLdouble y;
}
将指向windowData
的指针与window
:
MyWindowData windowData;
glfwSetWindowUserPointer( window, &windowData );
glfwSetCursorPosCallback( window, mouse );
从window
获取指针并将void*
类型的指针投射到MyWindowData *
(遗憾的是你必须进行投射)。
void mouse(GLFWwindow* window, GLdouble x, GLdouble y)
{
MyWindowData *dataPtr = (MyWindowData*)glfwGetWindowUserPointer( window );
dataPtr->x = x;
dataPtr->y = y;
}