我一直在閱讀很多關於多線程渲染。人們一直在提出各種奇怪而奇妙的方案,用線程向GPU提交工作,以加快幀頻並獲得更多的東西,但是我對整個事情有一個概念上的問題,而我我以爲我會在這裏由專家運行它,看看你的想法。多線程渲染D3D/OpenGL /無論
據我所知,GPU上併發的基本單位是Warp。也就是說,它在像素級別下降,而不是在幾何提交級別更高。所以考慮到GPU上的併發單元是扭曲的,驅動程序必須與互斥鎖緊密鎖定,以防止多個線程搞砸對方的提交。如果是這種情況,我不會看到編碼到D3D或OpenGL多線程原語的好處。
毫無疑問,在多線程場景中使用GPU的最有效方法是在更高級的抽象級別上,在提交它之前要一起收集批量工作?我的意思是,而不是隨機交錯多個線程的命令,我會認爲一個塊接受來自多個線程的工作,但是它裏面有一點智能,以確保事物被訂購以獲得更好的性能,之後被提交給渲染器,如果你想要使用多線程,將會是一個更大的收益。
那麼,在實際的API中,D3D/OpenGL支持多線程渲染?
幫我解惑!
「多線程渲染」是什麼意思?因爲這兩個API都不允許多線程*渲染*。 –
D3D11命令列出了不同線程和「在不同線程上產生的併發對象」,在OpenGL的無數博客和人們試圖「讓他們的渲染器多線程化」的帖子中 - 太多無法計數:)。 – Robinson