0
setCallback
함수를 사용하는 C 라이브러리로 작업하고 있습니다. 이러한 기능은 고정 된 서명, 예컨대 :와 기능을 mouse_move
이 서명Cython의 C 함수에서 클래스/인스턴스 속성에 액세스하십시오.
void mouse_move(GLFWwindow * window, double xpos, double ypos)
그러나 mouse_move
을 가정이 camera
구조체처럼,이 함수 인수를 넘어 다른 상태에 따라 달라집니다
int glfwSetCursorPosCallback(window, mouse_move);
? C에서 나는 단지 camera
을 전역 변수로 만들 것이다. 그러나, 나는 Cython
에서 일하고 있는데, 쓸모없는 지저분한 글로벌 변수를 사용하지 않고 glfwSetCursorPosCallback
을 사용하고 싶습니다. camera
이 클래스 또는 인스턴스 속성 인 경우 인수로 전달하지 않고 mouse_move
에서 액세스 할 수 있습니까?
이것은 실제로 Cython에서는 가능하지 않습니다. 나는 [비슷한 문제에 대해 ctypes를 사용하도록 권장했습니다.] (https://stackoverflow.com/questions/34878942/using-function-pointers-to-methods-of-classes-without-the-gil/34900829#34900829)를 사용하여 일반 파이썬 호출 가능 함수를 전달할 수 있지만 'GLFWwindow *'창 매개 변수를 사용하면 여기에서 수행하기가 어렵습니다. – DavidW
또한 'GLFWwindow'를 사용하면 콜백에서 액세스 할 수있는 사용자 정의 데이터 (예 : void 포인터를 통해)를 저장할 수 있습니다. 이것은 물론 사용중인 라이브러리에 따라 다릅니다. 이것은 Cython과는 완전히 독립적입니다. –