I had an inquiry about my GTK GLWidget supporting OpenGL calls from a second thread. I had been under the assumption that OpenGL calls always had to be made on the main thread. The person who made the inquiry said that they got the OpenTK GLControl to work fine from a second thread.
I did some looking and found the following blog about how to get multithreaded OpenGL calls working on different platforms:
Has anyone played with this much?
In my code I am currently using two queues, one for CPU tasks and one for GPU tasks. I spawn threads that handle the CPU tasks and the main thread handles any GPU tasks. I am wondering if creating GL objects on the separate threads and then rendering them on the main thread would be better. The problem there is that OpenGL is asynchronous and you have to do a glFlush to make sure the objects have actually been created, and the glFlush can add extra overhead.