OpenGL 和线程
众所周知,OpenGL 驱动程序通常不支持多线程。 然而,是否必须处理主线程(例如 SDL) 调出 GL 上下文?如果一个线程产生一个线程并且从那时起 从那里发送 OpenGL 命令安全吗?或者有没有 仅限于启动 GL 的主线程 语境?
It's known that OpenGL drivers usually don't tolerate [multi]threading.
However, does one have to deal with the main thread (of e.g. SDL) that
brought up a GL context? If one spawns a thread and from then on only
from there dispatches OpenGL commands will it be safe? Or does it have
to be restricted to the main thread that brought up the GL
context?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将 OpenGL 上下文设置为要使用它的线程上的当前上下文,并且上下文一次只能在一个线程上设置为当前上下文。因此,如果将其设为当前上下文,则创建上下文并从另一个线程使用它就可以了。
对于使用 OpenGL 的多线程,您需要多个 OpenGL 上下文,每个线程一个。并且您可以在 OpenGL 上下文之间共享资源。
You need to make the OpenGL context current on the thread you want to use it, and a context can be made current only on one thread at a time. So creating a context and using it from another thread is fine if you make it current.
For multiple threads using OpenGL, you need multiple OpenGL contexts, one for each thread. And you can share resources between OpenGL contexts.