这是我当前的设置:我正在使用 SDL(目前在 Linux 上)进行 OpenGL 渲染。我初始化 SDL ( SDL_Init
) 并在主线程中创建应用程序窗口 ( SDL_CreateWindow
) 并将其传递给第二个线程。第二个线程从它创建一个 OpenGL 上下文 ( SDL_GL_CreateContext
) 并启动一个渲染循环,而主线程监听事件。我认为重要的是要注意 GL 调用完全限于第二个线程;实际上我的大部分应用程序逻辑都发生在那里,主线程实际上只负责处理通过 SDL 传入的事件。
最初我以相反的方式执行此操作,但事实证明,除了 OSX 上的主线程和可能还有 Windows 上的主线程之外,您无法处理任何事件,因此我将其切换为将来与这两者兼容。
我是否应该担心这在 OSX/Windows 上不起作用?在 Linux 上,我什么都没有。互联网上有很多关于上下文共享和从多个线程执行 GL 调用的信息,但我想做的只是在一个不是主要线程的线程中执行 OpenGL。我不想继续编写我的应用程序,只是后来发现它在其他任何地方都行不通。