2016-09-06 99 views
0

我正在寫一些代碼,使用SDL2來顯示帶有移動標記的圖像,並且我想使用新的(?)2D硬件加速渲染。據我瞭解,我必須加載圖像並將其轉換爲紋理 - 但有什麼區別?搜索'圖像紋理2D SD'只能得到我如何加載紋理教程,我正在尋找更多的背景,而不是如何做。SDL基礎知識:紋理與圖像

因此,一些問題:

  • 什麼是質感對比的圖像?他們不是一回事嗎?
  • 我正確的假設我需要加載靜態背景圖像作爲紋理,如果我想硬件加速渲染?事實上,它聽起來像所有這些位需要紋理才能起作用。
  • 說到OpenGL,SDL紋理實際上是OpenGL紋理嗎?
  • 我正在寫有限資源(雙核ARM CPU,雙核Mali 400 GPU,4GB RAM:Olimex A20 LIME2)的單用途機器的主應用程序。我所需要做的就是呈現一個480x800(是的,肖像佈局)圖像並在其上放置標記。我希望標記有一個不透明的圖層和兩個透明圖層,以每秒15幀的速度更新,我預計其中有125個圖層是頂部。使用2D硬件加速是值得的,還是應該用軟件來做?
+0

MayeulC說什麼,至於第三個問題 - 這取決於。它不僅僅是將'GLuint'轉換爲'SDL_Texture *'類型,它具有內部結構,但是,對於GL渲染實現,它在其內部代碼中使用GL紋理。對於其他目標(例如d3d甚至軟件渲染),當然不會有OpenGL。 – keltar

回答

3

要了解紋理的基本知識,我建議你看看a simpler library's documentation。在這裏,術語pixmap的使用方式與SDL的texture相同。實質上,這些已經轉換並上傳到GPU的內存中,這使得操作速度更快,但處理起來也更復雜。

OpenGL紋理是另一種野獸,但我們基本上可以說它們是相同的,也就是說,視頻內存中的圖像。在OpenGL中綁定紋理時,需要將其上傳到GPU內存,這與此紋理轉換有些類似。

在125個物體上,我認爲考慮使用2D加速會變得很麻煩,特別是如果您必須移動它們。如果這只是一個靜態圖像,我想你可以去正常的圖像路線。

作爲一般規則,我鼓勵您儘可能使用2D加速(或只是加速),如果僅用於電池改進。這樣說,如果圖像是靜態的,結果將完全相同,也許只是略有不同的代碼路徑。因此,我想你可以像沒有任何缺點一樣將靜態背景圖像加載爲常規圖像(請注意,我不是SDL專業人士,所以這種混合方法可能無法在這裏工作,但值得嘗試,因爲它可以用於大多數2D工具包)。

我希望我回答你所有的問題:)

+0

感謝您的回答!那麼,從我收集的信息來看,「紋理」僅僅是上傳到GPU硬件的位圖? – joemadeus

+0

嗨,基本上就是這樣。這樣,紋理訪問和轉換速度更快,更高效,因爲它們已經上傳到GPU內存中。採用相反的方法,您通常最終會轉換CPU上的圖片,然後將其發送到GPU,以進行每次轉換;這在計算上可能是昂貴的。 – MayeulC