2012-09-18 32 views
0

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

回答

5

多线程OpenGL的操作是一个讨厌的野兽。然而,你可以,而且这是我强烈建议的,将一个像素缓冲区对象映射到程序的地址空间。所有线程都可以看到地址空间区域。因此,您可以从另一个线程更新卷数据(或者像我目前正在使用的程序的情况下,在另一个GPU上),然后发信号通知主线程从PBO中的新数据更新纹理。您也可以使用glTexSubImage3D更新PBO中的卷的子部分。