我正在使用使用setCallback
函数的c库。这些函数采用具有固定签名的函数,例如:
int glfwSetCursorPosCallback(window, mouse_move);
mouse_move
有签名的地方
void mouse_move(GLFWwindow * window, double xpos, double ypos)
但是假设mouse_move
依赖于这些函数参数之外的其他状态,比如camera
结构?在c中,我只是将camera
作为全局变量。但是,我正在Cython
工作,我想使用glfwSetCursorPosCallback
而无需求助于全局变量,这些变量是单声道和混乱的。如果camera
是类或实例属性,有没有办法从mouse_move
中访问它而不将其作为参数传递?
答案 0 :(得分:0)
这不是一般问题的解决方案,但对于glfw回调,可以将void*
与GLFWwindow
关联,如下所示:
glfwSetWindowUserPointer(window, yourVoidPtr);
稍后访问它(例如在回调中):
YourData *data = (YourData *) glfwGetWindowUserPointer(window);