2017-01-23 195 views
1

約與經常更新的豐富的菜單,一個窗口一個一般性的問題,但只有10%左右,實際屏幕的更新。很多,如果文字保持不變。SDL:硬件渲染VS軟件渲染

SDL2使用渲染和紋理來利用硬件加速,但也允許軟件渲染。

我的問題是:

  • 它更快通過使用SDL_CreateRender()直接渲染到硬件每次重繪整個屏幕/菜單/硬件渲染在整個菜單每次只有當畫菜單的10%實際上發生了變化?或者:
  • 它更快使用SDL_CreateSoftwareRenderer()/軟件渲染,然後更新只有10%,實際上改變了寫整個菜單一旦進入RAM?
+3

**資料就知道肯定**(但我會說這並不重要,除非它開始滯後。)此外,還有第三種方式,也應該是方便,我想最快:您可以將菜單的靜態部分硬件渲染爲紋理,然後硬件渲染每一幀。 (另外,如果你正在做一個遊戲,那麼軟件渲染可能不是一種選擇,因爲除了菜單一切通常是經常更新。) – HolyBlackCat

+2

我的猜測是,這將在很大程度上取決於它運行在PC上,但硬件加速可能會更快,即使完全重繪。但是,聽起來這不是一個資源沉重的應用程序,所以或許更容易編寫和維護是最好的。 – Alden

+0

謝謝你們。在花費大量時間處理問題之前,能夠獲得其他意見是很好的。最簡單的方法是使用硬件渲染,並且每次都重繪整個窗口,因爲它足夠快。 – Brian

回答

1

謝謝你們。

在花費大量時間處理問題之前,很高興能夠獲得其他意見。最簡單的方法是使用硬件渲染,並且每次都重繪整個窗口,因爲它足夠快。

主程序將一切(Linux下的實時數據和GUI)作爲單個像素繪製到以30Hz的速率渲染到屏幕上的紋理。我發現,一旦CPU時鐘頻率超過1Ghz,大部分圖形(小面積/像素)比硬件渲染速度更快或更快,除非清除屏幕的大部分區域。它需要一些工作和大量在像素數據(GUI和數據)在main中更新時讀取SDL渲染以在線程中工作。