我可以在一个线程中创建 glFenceSync,然后在另一个线程中等待它吗?
或
我可以在一个上下文中创建 glFenceSync 并在另一个上下文中等待它吗?
最佳答案
May I create a
glFenceSync
in one thread, and wait for it in another thread?
您可以调用的每个 GL 函数都要求您为调用它的线程设置当前的 GL 上下文,并且 GL 上下文在任何时间点最多只能是一个线程的当前上下文。
从技术上讲,您问题的答案仍然是"is",因为您可以在一个线程上发出 glFenceSync
,将上下文移至另一个线程并调用 gl[Client]WaitSync
那里 - 但这可能不是您想要的,而且我也没有看到这种模式的明显用例。
May I create a
glFenceSync
in one context and wait for it in another context?
同步对象在 GL 中是可共享的,因此如果您创建共享对象的上下文,它们也将共享同步对象,并且规范明确允许等待另一个上下文的同步对象。实际上,甚至指定单个同步对象上可以有多个同时等待,并且当同步对象收到信号时,所有这些等待都将被解除阻塞(但顺序取决于实现)。
关于opengl - glFenceSync 可以跨线程或上下文边界使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61476482/