理想情況下,我想讓多個工作線程能夠渲染到離屏渲染目標,然後將渲染內容「傳送」到屏幕上的目標。用hwnd渲染目標這似乎不是一個問題(msdn有它的一個例子)。使用Direct2D和DXGI(D3D interop)進行多線程的最佳做法是什麼?
我不太清楚如何在屏幕渲染目標基於DXGI交換鏈時執行此操作。據我所知,每個窗口只能有一個交換鏈。因此,我只能根據交換鏈獲得單個渲染目標。這意味着屏幕渲染只能通過該單個渲染目標完成。
如果我上面的假設是正確的,那麼處理多線程渲染的最佳方法是什麼?我是否需要序列化訪問屏幕上的目標?工作線程應該共享一個多線程d2d工廠嗎?如果適當的鎖定機制就位,屏幕上的目標的BeginDraw/EndDraw/Present可以在工作線程(即沒有創建屏幕目標的線程)上執行嗎?
我會感激任何的建議。 謝謝。