这是我当前的设置:我正在使用SDL(目前在Linux上)进行OpenGL渲染。我初始化SDL(SDL_Init
)并在主线程中创建应用程序窗口(SDL_CreateWindow
)并将其传递给第二个线程。第二个线程从它创建一个OpenGL上下文(SDL_GL_CreateContext
)并启动一个渲染循环,而主线程监听事件。我认为重要的是要注意GL呼叫完全局限于第二个线程;实际上我的大部分应用程序逻辑都发生在那里,主线程只负责处理通过SDL发送的事件。SDL 2.0:在主线程中创建窗口,但在单独的窗口中进行所有渲染
原来我是这样做的另一种方式,但事实证明,你不能处理除OSX主窗口以外的任何事件,也可能是Windows,所以我将它切换到兼容这两个在未来。
我是否应该担心这在OSX/Windows上不起作用?在Linux上,我什么都没有。互联网上有很多关于上下文共享和从多个线程进行GL调用的信息,但我想要做的就是在一个不是主要线程的线程中执行OpenGL。我不想继续编写我的应用程序,以后才发现它不能在其他地方使用。
听起来没问题。还有另一个线程在这里... [链接](http://stackoverflow.com/questions/6172020/opengl-rendering-in-a-secondary-thread?rq=1) – user1961169
@ user1961169谢谢,我已阅读你链接的线程。那个人在Linux/X11上遇到了麻烦,对我而言,这对我来说非常完美,它只是我不确定的OSX/Win32。不过,该主题中有一些评论意味着在这些平台上它应该没问题,所以感谢提醒我! – Ancurio
唯一要保证的是操作系统的东西调用在App主线程中。如果不是,那么它会创建经常奇怪的行为(在展台赢和Linux),如句柄的失效,偶尔的例外,图形工件,场合GUI错误等... – Spektre