的glfwInit()
的JavaDoc LWJGL 3种状态:glfwInit()从非主线程
此功能必须只从主线程调用。
不过,我运行Windows 10 acer的机器上进行了测试,我发现它并不重要线索glfwInit()
叫上,只要是同一个线程任何其他GLFW调用。
文档是错误的,还是仅适用于某些机器或操作系统?
的glfwInit()
的JavaDoc LWJGL 3种状态:glfwInit()从非主线程
此功能必须只从主线程调用。
不过,我运行Windows 10 acer的机器上进行了测试,我发现它并不重要线索glfwInit()
叫上,只要是同一个线程任何其他GLFW调用。
文档是错误的,还是仅适用于某些机器或操作系统?
我发现,它并不重要线索glfwInit()调用
首先的。只是因为某些东西似乎有效,并不意味着它会继续发挥作用。换句话说,某些特定的事件可能最终会导致您尚未测试的应用程序崩溃。
该功能只能从主线程调用。
这里重要的是GLFW documentation永远不会指定“主线程”的含义。
引用GLFW的开发者和维护者Camilla Löwy/elmindreda。
可可有一个单一的事件队列,只能从主线程访问,对大多数窗口操作也一样。 Win32每个线程有一个事件队列,窗口与创建它们的线程的队列绑定。 X11有一个单一的队列,事件处理和窗口操作可以从任何线程完成。 GLFW强加的限制是确保程序是可移植的。这个限制是不被强制执行的,即图书馆不会阻止你在脚下射击自己。 如果加载或渲染阻塞你的程序,把它放在另一个线程中。出于这个原因,你需要渲染和交换缓冲区的所有东西都是线程安全的。
GLFW强加的限制是确保程序是可移植的。这个限制是不被强制执行的,即图书馆不会阻止你在脚下射击自己。
简而言之。可可不会高兴。但是,在Windows上,如果窗口和OpenGL上下文是在同一个线程上创建的,那么就不会有任何问题。
但是最后发挥规则到确保程序是可移植的。