0

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

4

1 回答 1

5

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

于 2012-09-18T20:01:05.690 回答