【问题标题】:openGL volume rendering and display update in different thread不同线程中的openGL体绘制和显示更新
【发布时间】:2012-09-18 19:56:39
【问题描述】:

我正在使用 openGL 和“freeglut”库进行体积渲染和显示。在主线程中我初始化了openGL窗口,然后逐帧获取体数据,获取一个体数据后进行体绘制。这很好用,但需要很多时间。我是否可以在主线程中继续初始化openGL窗口,并在另一个线程中进行体积渲染和显示?我检查了wglMakeCurrent,它不会更新在主线程中初始化的窗口。

【问题讨论】:

    标签: multithreading opengl rendering volume


    【解决方案1】:

    多线程 OpenGL 操作是一个讨厌的野兽。但是,您可以(我强烈建议)将像素缓冲区对象映射到程序的地址空间中。并且该地址空间区域对所有线程都是可见的。因此,您可以从另一个线程更新体积数据(或者,就像我目前正在处理的程序一样,在另一个 GPU 上),然后向主线程发出信号以根据 PBO 中的新数据更新纹理。您还可以使用 glTexSubImage3D 从 PBO 仅更新体积的子部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多