OpenGL中的多线程渲染

时间:2012-03-13 20:26:21

标签: multithreading opengl directx rendering

这甚至可能吗?我正在学习DirectX atm并试图将我学到的一些东西应用到OpenGL中。

我知道你可以使用延迟上下文在DirectX中进行多线程渲染,但我不认为OpenGL有这种支持,我发现OpenGL中有多线程的例子但没有多线程渲染,这是我试图找出的;或者我误解了差异?

如果有可能,任何人都可以为我提供一些基本代码作为示例。

2 个答案:

答案 0 :(得分:2)

这不是OP问题的真正答案,但对他的要求很重要:

GPU有点像互斥资源。如果您有多个线程执行绘图操作,则会产生管理开销。这项工作必须分成着色器单元或涉及一些时间。无论哪种方式,如果绘图操作转到同一帧缓冲区,操作必须同步,这意味着GPU管道经常停滞。

最终结果是,在GPU上执行多线程操作很可能会导致性能大幅下降。

此外,无需在GPU上执行多线程操作来并行化工作。这已经通过将单个绘图操作拆分为GPU各个着色器单元而发生。

答案 1 :(得分:1)

OpenGL没有相当于D3D11的延期上下文。最接近的是显示列表,但这些解决了一个完全不同的问题,而且不是一遍又一遍地重建。