Anc*_*rio 19 windows opengl macos multithreading sdl
这是我目前的设置:我正在使用SDL进行OpenGL渲染(目前在Linux上).我初始化SDL(SDL_Init)并SDL_CreateWindow在主线程中创建应用程序窗口()并将其传递给第二个线程.第二个线程从it(SDL_GL_CreateContext)创建一个OpenGL上下文并启动一个渲染循环,而主线程侦听事件.我认为重要的是要注意GL调用完全局限于第二个线程; 实际上我的大多数应用程序逻辑都在那里发生,主线程实际上只负责处理通过SDL传入的事件.
最初我反过来做了这个,但事实证明你不能处理除了OSX上的主线程以及可能还有Windows之外的任何事件,所以我将其切换为将来兼容这两个.
我是否有任何担心这不适用于OSX/Windows?在Linux上,我没有任何东西.互联网上有很多关于上下文共享和从多个线程进行GL调用的信息,但我想要做的就是在一个不是主线程的线程中做OpenGL.我不想继续编写我的应用程序编码,以后发现它不会在其他地方工作.
我有一个在 Mac/iOS/Windows 上运行的应用程序,其结构如下(渲染线程中的所有 GL),但我不使用 SDL。
我刚刚查看了 SDL Cocoa_GL_CreateContext(在 OS X 上调用SDL_GL_CreateContext),它进行了我从主线程进行的调用以设置上下文。
因此,如果遇到任何问题,请尝试在主线程中创建 GL 上下文,然后将其传递给渲染线程(而不是在渲染线程中创建 GL 上下文)。