从回调函数中检索数据

Retrieving data from callback function

我是不是要在 GLFW 中设置一个回调函数,比方说

glfwSetCursorPosCallback(window, mouse);

检索光标位置的最明显方法是

vec2 m;

void mouse (GLFWwindow* window, GLdouble x, GLdouble y)
{
    m = vec2 (x, y);
}

但是,我更愿意在不使用全局变量的情况下这样做。可以吗?

您可以将用户指针关联到 GLFWindow。参见 glfwSetWindowUserPointer

可以通过 glfwGetWindowUserPointer

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; 
}