我发现这些函数可以为来自硬件的事件注册回调(也许吧?我不确定)。
喜欢以下功能。
glfwSetCursorPosCallback(window, mouse_callback);
glfwSetScrollCallback(window, scroll_callback);
很好奇这些函数是怎么调用的。 GLFW 是否通过
glfwInit
创建一个新线程来循环这些功能?或者 GLFW 是否注册了一些监听器来监听来自不同硬件的这些事件?
我跟踪运行的程序,发现在主线程中调用了该函数。而且我发现该函数在 glfwPollEvents 中被调用。这意味着硬件输入保存在缓冲区中,opengl 将获取输入并进行回调。
大部分 GLFW API 被指定仅在主线程(您的应用程序启动的线程)上使用。每个回调都将在此线程上执行,在对
glfwPollEvents
或 glfwWaitEvents
的调用中。您的回调将永远不会在任何其他线程上执行。