2017-08-25 8 views
0

Wenn opengl über lwjgl verwendet wird, wenn ein opengl-Kontext nicht verfügbar gemacht wird, indem kein Kontext aktiviert wird (mit glfwMakeContextCurrent (0)), ruft opengl als Ergebnis 0 auf. Dies kann zu unerwarteten Ergebnissen führen, und es ist oft schwer zu erkennen, wo das Problem liegt. Gibt es eine Möglichkeit zu sagen, wenn ein Kontext mit einem Rückruf oder etwas umgeschaltet wird, so dass ein richtiger Fehler abgelegt werden kann?So erkennen Sie, wenn ein OpenGL-Kontext geändert wird

Antwort

1

Soweit ich sagen kann, verwendet die lwjgl Bibliothek mehrere verschiedene APIs, einschließlich GLFW. Wenn Sie die GLFWAPI verwenden Kontexte zu erstellen (oder die Bibliothek, die es, wie es von der Website aussieht), dann können Sie das Fenster erhalten verlangen, dass der Kontext zur Zeit der Verwendung gebunden ist:

glfwGetCurrentContext(); 

Wenn dies NULL zurückgibt, ist es wahrscheinlich momentan nicht an ein Fenster gebunden. Sie können diese Funktion in einem glwwPollEvents() -Stil-Callback (oder etwas Ähnlichem) implementieren und eine Fehlermeldung ausgeben, wenn der Kontextzustand überprüft wird.

+0

Wie würde ich das innerhalb der glfwPollEvents() Methode anwenden? – pdid

+0

Leider kenne ich Java nicht gut genug, um zu wissen, wie genau man das umsetzen kann. In C++ würde ich die Methoden einrichten, die ich für jedes spezifische Objekt abfragen möchte, indem ich die Callbacks glfwSet benutze. Wenn dann mein Objekt in jeder Schleife aktualisiert wird, wird die Methode abgefragt und zusammen mit den anderen Methoden aktualisiert . – Flare

Verwandte Themen