2017-04-08 135 views
1

glfwInit()的JavaDoc LWJGL 3種狀態:glfwInit()從非主線程

此功能必須只從主線程調用。

不過,我運行Windows 10 acer的機器上進行了測試,我發現它並不重要線索glfwInit()叫上,只要是同一個線程任何其他GLFW調用。

文檔是錯誤的,還是僅適用於某些機器或操作系統?

回答

2

我發現,它並不重要線索glfwInit()調用

首先的。只是因爲某些東西似乎有效,並不意味着它會繼續發揮作用。換句話說,某些特定的事件可能最終會導致您尚未測試的應用程序崩潰。

該功能只能從主線程調用。

這裏重要的是GLFW documentation永遠不會指定「主線程」的含義。

引用GLFW的開發者和維護者Camilla Löwy/elmindreda

可可有一個單一的事件隊列,只能從主線程訪問,對大多數窗口操作也一樣。 Win32每個線程有一個事件隊列,窗口與創建它們的線程的隊列綁定。 X11有一個單一的隊列,事件處理和窗口操作可以從任何線程完成。 GLFW強加的限制是確保程序是可移植的。這個限制是不被強制執行的,即圖書館不會阻止你在腳下射擊自己。 如果加載或渲染阻塞你的程序,把它放在另一個線程中。出於這個原因,你需要渲染和交換緩衝區的所有東西都是線程安全的。

GLFW強加的限制是確保程序是可移植的。這個限制是不被強制執行的,即圖書館不會阻止你在腳下射擊自己。

簡而言之。可可不會高興。但是,在Windows上,如果窗口和OpenGL上下文是在同一個線程上創建的,那麼就不會有任何問題。

但是最後發揮規則確保程序是可移植的