2017-04-08 8 views
1

Die glfwInit() JavaDoc für LWJGL 3 Zustände:glfwInit() aus Nicht-Haupt-Thread

Diese Funktion ist nur vom Haupt-Thread aufgerufen werden muss.

Allerdings habe ich diese auf einem acer Maschine Fenster 10, und ich habe festgestellt, läuft getestet, dass es keine Rolle spielt, welcher Thread glfwInit() wird aufgerufen, solange es das gleiche Gewinde wie jeder andere GLFW ist Anrufe.

Ist die Dokumentation falsch oder betrifft sie nur bestimmte Maschinen oder Betriebssysteme?

Antwort

2

ich gefunden habe, dass es nicht das Gewinde glfwInit auf

()

allererst genannt egal. Nur weil etwas zu funktionieren scheint, heißt das nicht, dass es weiter funktionieren wird. Mit anderen Worten, ein bestimmtes Ereignis kann zum Absturz Ihrer Anwendung führen, für die Sie noch nicht getestet haben.

Diese Funktion muss nur vom Haupt-Thread aufgerufen werden.

Die hier wichtige Sache ist, dass die GLFW documentation gibt nie, was von dem „Haupt-Thread“ gemeint ist.

Zitieren von GLFW Entwickler und Betreuer Camilla Löwy/elmindreda.

Cocoa hat eine einzige Ereigniswarteschlange, auf die nur vom Hauptthread aus zugegriffen werden kann, und dasselbe gilt für die meisten Fensteroperationen. Win32 verfügt über eine Ereigniswarteschlange pro Thread und Fenster sind an die Warteschlange des Threads gebunden, mit dem sie erstellt wurden. X11 hat eine einzige Warteschlange und Ereignisverarbeitung und Fensteroperationen können von jedem Thread ausgeführt werden. Die von GLFW auferlegte Beschränkung besteht darin, sicherzustellen, dass Programme portabel sind. Diese Beschränkung wird nicht erzwungen, d. H. Die Bibliothek versucht nicht zu verhindern, dass Sie sich selbst in den Fuß schießen. Wenn das Laden oder Rendern dein Programm blockiert, lege es in einen anderen Thread. Alles, was Sie zum Rendern und Austauschen von Puffern benötigen, ist aus diesem Grund auf allen Plattformen Thread-sicher.

Die von GLFW auferlegte Einschränkung besteht darin, sicherzustellen, dass Programme portabel sind. Diese Einschränkung wird nicht erzwungen, d. H. Die Bibliothek versucht nicht zu verhindern, dass Sie sich selbst in den Fuß schießen.

Also kurz gesagt. Kakao wird nicht glücklich sein. Da Windows und der OpenGL-Kontext jedoch im selben Thread erstellt werden, sollten keine Probleme auftreten.

Aber am Ende ist es besser, Spiel nach den Regeln-sicherzustellen, dass Programme tragbar sind.

Verwandte Themen