我想知道用多个线程进行GL调用是否安全。基本上我正在使用GLUtesselator并且想知道我是否可以将对象划分为4并为每个对象分配一个线程。
我只是想知道这是否会引起麻烦,因为tesselator使用回调函数。只要该回调不能访问ant全局变量,2个线程可以同时运行相同的回调吗?
还有其他方法可以使用多线程优化OpenGL绘图吗?
答案 0 :(得分:2)
在你问题的行之间阅读,答案是否定的。您不能同时从不同的线程调用相同的 GL上下文。您可以在Parallel OpenGL FAQ。
中找到更多详细信息答案 1 :(得分:1)
答案“只要该回调不能访问ant全局变量,2个线程可以同时运行相同的回调吗?”是明确的。
但是,当您在回调函数中修改OpenGL的状态时会遇到问题,尤其是在使用glBegin / glEnd时(例如,如果生成DisplayList)。只要您不使用GPU(例如,如果您使用网格),就可以使用多线程进行细分。
如果要优化绘图,可能需要使用几何着色器进行细分。这需要Shader Model 4。