当前位置: 代码迷 >> 综合 >> 关于opengl多线程渲染问题
  详细解决方案

关于opengl多线程渲染问题

热度:31   发布时间:2024-01-26 09:26:18.0

OpenGL Context同时只能被一个线程拥有,而在创建OpenGL窗口时被主线程占据了。

 

解决方法是用函数wglMakeCurrent( HDC hdc,HGLRC  hglrc),该函数可以将OpenGL Context关联到调用此函数的线程:在主线程里加上一句wglMakeCurrent(NULL,NULL),解除关联,在子线程开始时用wglMakeCurrent(hdc,hglrc)使子线程取得Context就行了。


我是在一篇关于多线程的OpenGL的英文资料里看到的,原文主要是解决同时用两个线程操作OpenGL:一个渲染,一个创建显示列表。

 

他用的方法是在渲染时渲染线程取得Context,结束后释放,另一个线程再占用……这样循环。

 

我估计甚至可以用wglMakeCurrent进行切换,实现多个线程同时往一个窗口上作图!当然不是完全同时,只是轮流占用而已。不过这样效率并不高