2013-04-03 52 views
1

假設我使用自己的着色器爲場景創建光照。這是一個很好的例子,可以在許多線程之間劃分,例如將場景分割成更小的場景並將它們渲染爲單獨的線程。圖形應用程序的線程效率

  1. 我應該手動將它分成線程,還是圖形庫會以某種方式自動分割這些操作?還是它依賴於庫(我使用libgdx,它似乎使用OpenGL)。或者也許還有其他理由,爲什麼我應該把它放在一個線程中?
  2. 如果我應該注意手動分割線程之間的工作負載,應該使用多少個線程?在這種情況下,依賴圖形卡或處理器的線程數量是多少?
+0

你有多少GPU? – genpfault 2013-04-03 20:33:12

+0

一。但是,應用程序的用戶可能會在SLI中擁有多個應用程序,或者使用多個芯片的GPU。 – Xyzk 2013-04-03 20:36:05

+0

顯卡有自己的調度和線程模型。它與操作系統線程無關。硬件OpenGL實現充分利用GPU中的硬件並行性。 – japreiss 2013-04-03 21:18:53

回答

3

OpenGL不支持多線程渲染,因爲OpenGL上下文僅在其創建的線程上有效。

你可以做些什麼來潛在地獲得一些性能是將你的更新邏輯和你的渲染邏輯分離成單獨的線程。但是,您無法利用多個線程進行OpenGL渲染。

+0

或在2張或更多卡片上進行並行渲染.... – 2013-04-04 14:58:43