正在从回调函数检索数据



如果我在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; 
}

相关内容

  • 没有找到相关文章

最新更新