Als eine Folge zu Can I make opengl extension pointers global?, wo ich fragte nach OpenGL Funktionszeiger globale Variablen.Glew und mehrere opengl-Kontexte (Funktioniert es?)
Es wurde darauf hingewiesen, dass die Funktionszeiger unter Windows nur für einen einzigen OpenGL-Kontext gültig sind. Ich entschied, dass ich einfach eine Ladeprogrammbibliothek verwenden würde, um es für mich zu tun.
Ich habe bei der Umsetzung sah in glew und gl3w, die sowohl auf der opengl Website empfohlen werden, und diese beiden scheinen die Funktionszeiger in globale Variablen einfach abladen und so wird nicht funktionieren, wenn Sie mehr als eine haben window/opengl context im Prozess.
Fehle ich etwas hier, oder können diese Bibliotheken einfach nicht verwendet werden, wenn die Möglichkeit besteht, dass mehr als ein Fenster opengl in einem Prozess verwendet?
Verwenden Sie GLEW MX. Tutorial zur Verwendung mit GLFW: https://blog.gvnott.com/2013/05/18/tutorial-multiple-windows-with-glfw3-and-glew-mx/ – Mars
@Mars: Sie haben MX eingestellt [letzten Monat in GLEW 2.0.0] (http://glew.sourceforge.net/log.html). – genpfault
Zwei Fenster/Kontexte sind nicht unbedingt zwei verschiedene Implementierungen. Wenn sie auf der gleichen Hardware laufen, ist es sehr wahrscheinlich, dass die Prozeduren für die Erweiterungen an denselben Ort gehen. Wenn Sie wirklich darüber besorgt sind, können Sie jedem Kontext einen Thread zuweisen und dann Thread Local Storage verwenden, um die Funktionszeiger zu speichern, das ist tatsächlich effektiv, wie WGL-Kontexte sowieso funktionieren. –