I have been trying to post a reply for over a week now (session verification failed)...
Please note that, even though no exceptions are raised, any OpenGL functions called after clearing the current context will result in a GL_INVALID_OPERATION error.
Thank you for pointing that out. I had completely forgotten to enable debug output, or even performing basic GL error checking.

GLFW contexts are externally managed contexts as far as LWJGL is concerned (and also coupled with GLFW windows). Their lifecycle is handled by GLFW, so the only LWJGL method that makes sense is GLContext.createFromCurrent(). This returns a GLContext, which basically wraps the external GLFW context. The user is then responsible for making sure that context remains valid while used.
How is GLContext.createFromCurrent() the only method that makes sense? What exactly is the message that is trying to be conveyed in this statement?
It looks like there are method pairs (GLFW + GL/GLContext), that should be used together:
- GLFW.createWindow() and GLContext.createFromCurrent() (with a current GLFW context)
- GLFW.makeContextCurrent() and GL.setCurrent()
- GLFW.getCurrentContext() and GL.getCurrent()
- GLFW.destroyWindow() and someGLContextInstance.destroy()
Or have I completely missed the point of these methods?
GL.getCurrent()'s behavior will be improved, I haven't yet tried to make it clever. But with externally managed contexts, you can never be 100% certain of the current state (without doing expensive queries per OpenGL call, etc).
Hopefully the ability to query the thread a context is attached to is planned. The ability to get the thread instances would help setting up, for example, a messaging system for dealing with contexts. Especially in the pesky situation where you need to, say, transfer a context (for one reason or another). This requires you to first detach the context on the owner thread, and then attach it on the new thread. At least I'm pretty certain attaching won't detach it from a different thread.
Also, OpenGL contexts can only be current in a single thread.
I accidentally wrote it in plural where it should have been singular. I'll correct it once the forums start working for me again.
EDIT: Grammar and other corrections.