如果我有两个opengl渲染线程,每个线程都有一个设置其上下文的模式,以固定的帧速率进行绘制。会有比赛吗?
我担心会发生以下情况:
反过来,两个线程都在第二个线程的上下文中绘制。
每当我设置渲染上下文时,我是否应该使用锁定,并绘制以确保操作不会干扰其他渲染线程?
答案 0 :(得分:0)
只要每个线程都有自己的上下文,就可以安全地绘制两个线程。
只有当你想要在线程之间共享一个上下文时,才能确保上下文一次只在一个线程中是当前的。
wglMakeCurrent()
的{{3}}设置规则:
一个线程可以有一个当前的渲染上下文。一个进程可以通过多线程具有多个渲染上下文。
线程必须在调用任何OpenGL函数之前设置当前渲染上下文。否则,将忽略所有OpenGL调用。
渲染上下文一次只能是一个线程。您不能将渲染上下文设置为多个线程。
应用程序可以通过使不同的渲染上下文最新到不同的线程来执行多线程绘制,为每个线程提供自己的渲染上下文和设备上下文。