我正在编写一个包装GLFW的库,以及其他一些库。我有一个需要了解用户界面事件的类,但GLFW使用轮询系统,我必须指定GLFW在事件发生时自动调用的函数。这会导致问题,因为我必须提供GLFW的那些函数无法与我的类的对象相关联,据我所知。例如:
class MyClass {
MyClass() {
// Initialize GLFW
glfwSetKeyCallback(window, keyboardEventFunction);
}
// other content
}
void keyboardEventFunction(GLFWwindow *window, int b, int a, int m) {
// I want to notify the MyClass object, but it's out of scope
}
我知道GLFW有一些非轮询功能来检索输入数据,但是如果我使用它们,我不能保证我不会因为我的程序没有错过一些东西。碰巧检查用户提供输入的确切时刻。我也失去了检查窗口焦点和光标进入 - 退出事件的能力。我怎样才能解决这个问题?