使用多个线程进行GL调用是否安全?

jma*_*erx 5 c c++ opengl multithreading

我想知道用多线程进行GL调用是否安全.基本上我正在使用GLUtesselator并且想知道我是否可以将对象划分为4并为每个对象分配一个线程.

我只是想知道这是否会导致麻烦,因为tesselator使用回调函数.只要该回调不能访问ant全局变量,2个线程可以同时运行相同的回调吗?

还有其他方法可以使用多线程优化OpenGL绘图吗?

fly*_*lyx 1

“只要回调不访问 ant 全局变量,两个线程是否可以同时运行相同的回调?”的答案 是明确的“是”。

然而,当你在回调函数中修改OpenGL的状态时,你会遇到问题,特别是在使用glBegin / glEnd时(例如,如果你生成一个DisplayList)。只要您不使用 GPU(例如,如果您使用网格),您就可以使用多线程进行曲面细分。

如果您想优化绘图,您可能需要使用几何着色器进行曲面细分。这需要 Shader Model 4。