我的应用程序有两个线程:A和B.A是主线程,B是我的视频线程。 视频线程具有初始化的OpenGL上下文,其中OpenGL功能正常工作。 但是,当我从线程A调用OpenGL函数时,函数失败并出现1282错误(GL_INVALID_OPERATION) 是否可以从我的主线程(A)调用OpenGL函数?
答案 0 :(得分:11)
除非您正在进行慢速内容的实际背景渲染,否则这可能无法为您提供性能增量。
在Windows上,每个线程都打开gl上下文。确保在尝试调用open gl函数之前从工作线程调用wglMakeCurrent。
Open GL不是线程安全的。如果您尝试在多个线程上创建相同的上下文,则不会阻止您。它会爆炸。
答案 1 :(得分:3)
GL 不线程安全,因此您无法从2个不同的线程调用GL函数。您必须使用互斥锁保护每个gl部分,这会破坏您期望的任何性能提升加上互斥锁定的开销以及可能需要的上下文切换。