openGL卷渲染和显示更新在不同的线程中

use*_*794 0 opengl multithreading rendering volume

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

dat*_*olf 5

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