这甚至可能吗?我正在学习DirectX atm并试图将我学到的一些东西应用到OpenGL中。
我知道你可以使用延迟上下文在DirectX中进行多线程渲染,但我不认为OpenGL有这种支持,我发现OpenGL中有多线程的例子但没有多线程渲染,这是我试图找出的;或者我误解了差异?
如果有可能,任何人都可以为我提供一些基本代码作为示例。
答案 0 :(得分:2)
这不是OP问题的真正答案,但对他的要求很重要:
GPU有点像互斥资源。如果您有多个线程执行绘图操作,则会产生管理开销。这项工作必须分成着色器单元或涉及一些时间。无论哪种方式,如果绘图操作转到同一帧缓冲区,操作必须同步,这意味着GPU管道经常停滞。
最终结果是,在GPU上执行多线程操作很可能会导致性能大幅下降。
此外,无需在GPU上执行多线程操作来并行化工作。这已经通过将单个绘图操作拆分为GPU各个着色器单元而发生。
答案 1 :(得分:1)
OpenGL没有相当于D3D11的延期上下文。最接近的是显示列表,但这些解决了一个完全不同的问题,而且不是一遍又一遍地重建。