2012-09-18 34 views
0

我使用OpenGL和「freeglut」庫體繪製和顯示。在主線程中,我初始化openGL窗口,然後逐幀獲取體積數據,體積渲染在獲取一個體積數據後完成。這很好,但需要很多時間。是否有可能在主線程中繼續初始化openGL窗口,並在其他線程中進行體繪製和顯示?我檢查了wglMakeCurrent,它並沒有更新在主線程中初始化的窗口。openGL的體繪製和更新顯示在不同的線程

回答

5

多線程OpenGL的操作是一個討厭的野獸。然而,你可以,而且這是我強烈建議的,將一個像素緩衝區對象映射到程序的地址空間。所有線程都可以看到地址空間區域。因此,您可以從另一個線程更新卷數據(或者像我目前正在使用的程序的情況下,在另一個GPU上),然後發信號通知主線程從PBO中的新數據更新紋理。您也可以使用glTexSubImage3D更新PBO中的卷的子部分。