opengl - glFenceSync 可以跨线程或上下文边界使用吗?

标签 opengl opengl-es

我可以在一个线程中创建 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/

相关文章:

ios - 用于多重采样的 OpenGL ES 快照在 iOS 中提供奇怪的颜色

java - Android:glReadpixels 大于视口(viewport)?

android - GLES20 是否绘制出边界顶点?

c++ - 在 OpenGL 中缩放投影矩阵时出现意外行为

algorithm - 在地形图上绘制道路

c++ - glCopyPixels() 没有返回选定的缓冲区像素

android - 如何在 OpenGL ES 2 中正确缩放

c - 海龟用 openGl 绘制分形

opengl - opengl中图像部分透明部分周围的暗光晕

c++ - 直接从 C++ 应用程序绘制到 WebGL Canvas