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 )を使って一般的なPython呼び出し可能関数を渡すことができますが、 'GLFWwindow *'ウィンドウパラメータではこれを行うのが難しくなります。 – DavidW
また、 'GLFWwindow'はコールバックからアクセスできるカスタムデータを(例えばvoidポインターを介して)格納できる可能性があります。これはもちろん、使用されているライブラリに依存します。これはCythonとはまったく独立しています。 –