2014-02-21 119 views
2

我正在從SDL轉向SDL2,並對引入的'render &紋理'系統感到困惑。概念上,SDL2中的渲染器和紋理是什麼?

回到SDL,最常見的操作是將Surface和BlitSurface創建到屏幕上。現在似乎有使用渲染器和紋理的趨勢。但是,從我的觀點來看,這非常緩慢(在編碼開銷方面)。爲什麼我不能像以前一樣load_BMP和BlitSurface?從整個窗口渲染器紋理的東西可以引入什麼好?

我已閱讀了幾條線索What is a SDL renderer?,但仍有點混淆。

所以..

  1. 將在SDL2老面的方式工作?

  2. Renderer中的點是什麼&質地? (可能是關於硬件accelaration根據一點谷歌搜索,但不知道這意味着什麼)

回答

5

你可能想看看migration guide爲SDL2,它提供了處理的新途徑信息2D圖形。

使用紋理而不是曲面的一點是,紋理在GPU上工作,並加載到視頻內存中,曲面在CPU中與系統內存一起工作,並且由於GPU比CPU更適合處理圖形,因此它將更快。此外,渲染器隱藏使用的底層系統(可能是D3D,OpenGL或其他)。

您仍然可以加載曲面,但在渲染它們或使用SDL_ UpdateWindowSurfaceSDL_GetWindowSurface函數之前,您必須將它們轉換爲紋理;後面的鏈接包括如何使用它們的例子。

至於SDL2方法緩慢,我斷言,我不同意你,你設置窗口和渲染器一次,加載你的紋理很像你加載的表面,將它們複製到渲染器而不是blitting最後使用SDL_RenderPresent而不是SDL_Flip。沒有那麼不同:)

但是,看看migration guide,它有你正在尋找的信息。

+0

非常豐富!我同意你的看法,看你的描述並不慢。我可能只是不習慣新的方式而生氣了一點。再次,非常感謝。 – Diaz

+0

@Diaz樂於幫助。如果您想快速介紹SDL2,我真的可以推薦[Lazy Foo的SDL2教程](http://lazyfoo.net/tutorials/SDL/index.php)。 – jpw

+0

添加書籤:) – Diaz