代码之家  ›  专栏  ›  技术社区  ›  Ben Zotto sberry

对于具有不同上下文的多个线程,OpenGL线程安全吗?

  •  11
  • Ben Zotto sberry  · 技术社区  · 14 年前

    对于是否可以在两个不同的线程上安全地创建两个上下文(例如,一个主线程绘制到屏幕,另一个辅助线程执行屏幕外绘制工作)并让它们同时调用GL函数的问题,我还没有找到一个确定的答案。

    换句话说,只要上下文不同,两个线程就可以“共享”C API和GPU吗?或者这是一种内在的不可分割的东西?或者这个实现是特定的?

    专门询问iOS上的OpenGL ES,但这可能是一个一般的GL问题。

    2 回复  |  直到 12 年前
        1
  •  9
  •   Dr. Snoopy    14 年前

    是的,您需要为每个要与OpenGL一起使用的线程使用一个上下文,还可以在上下文之间共享对象。这是一条路:)

        2
  •  1
  •   Jonas Sourlier    11 年前

    选择1 :如果两个线程不同时使用上下文,一个上下文就足够了。

    选择2 :如果需要多个线程同时使用OpenGL,则需要多个上下文。然后,如果上下文共享 ,它们像纹理一样共享OpenGL内容。这样,您可以加载纹理或在后台线程上执行重帧缓冲区处理。

    请在此处查看有关共享组的最后一节: http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/WorkingwithOpenGLESContexts/WorkingwithOpenGLESContexts.html

    选择3 GLKTextureLoader s公司 - textureWithContentsOfFile . 我不知道所有的选项,但它确实简化了异步OpenGL的一些用例。