这是我的目前设置:我在Linux上使用SDL进行OpenGL渲染。我在主线程中初始化SDL(
SDL_Init)并创建应用程序窗口(SDL_CreateWindow ),然后将其传递给第二个线程。这个第二个线程从它创建一个OpenGL上下文(SDL_GL_CreateContext
)并启动渲染循环,而主线程则监听事件。值得注意的是GL调用完全限于第二个线程;实际上,我大部分的应用逻辑都发生在那里,主线程只负责处理通过SDL传入的事件。
最初我是反过来做的,但事实证明你不能在OSX和可能也是Windows之外的任何线程中处理事件,所以我把它改为与这两个平台兼容。
我应该担心这在OSX / Windows上不起作用吗?在Linux上,我没有任何问题。互联网上有大量关于上下文共享和在多个线程中进行GL调用的信息,但我只想在一个不是主线程的线程中执行OpenGL。我不想继续编写我的应用程序,只是后来发现它在其他地方无法工作。