从Cython中的C函数访问类/实例属性

时间:2017-11-15 19:00:12

标签: callback attributes global-variables cython

我正在使用使用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中访问它而不将其作为参数传递?

1 个答案:

答案 0 :(得分:0)

这不是一般问题的解决方案,但对于glfw回调,可以将void*GLFWwindow关联,如下所示:

glfwSetWindowUserPointer(window, yourVoidPtr);

稍后访问它(例如在回调中):

YourData *data = (YourData *) glfwGetWindowUserPointer(window);