关于opengl多线程渲染问题

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

 

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


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

 

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

 

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

发布了117 篇原创文章 · 获赞 52 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZhaDeNianQu/article/details/104044168