1. 程式人生 > >SDL是什麼,能幹什麼,為什麼我們要學習它?

SDL是什麼,能幹什麼,為什麼我們要學習它?

關於SDL,在簡介裡面,有一些概念,但是很多人還是留言,不清楚到底是個什麼。這節,我簡單總結下:

我們如何將一張圖顯示在螢幕上。這裡簡單的分為幾個部分,硬體螢幕,驅動程式,軟體部分。SDL不直接關注硬體螢幕,而是關注每個平臺下的螢幕驅動程式。比如window下的DirectX,linux下的x11 ,以及android下的opengl es。SDL通過將這三個平臺,當然不止這三個平臺的螢幕驅動,封裝成一套對外統一的API呼叫,讓使用者可以不關注具體某個平臺,可以快速開發影象的繪製操作。SDL的核心,便是如此。

在此基礎上,SDL支援了各種圖片載入,渲染,各種圖片的畫素格式轉換,比如RGB565轉換到RGB888等等。SDL的主要任務,便是完成影象的載入,渲染顯示,其他方向都比較單薄,對於開發遊戲來說,顯得力不從心,由於其沒有配套的開發元件,比如介面庫,動畫庫,粒子庫等等,都是沒有的。然而為什麼選它呢?

算是一個巧合而已,做ffmpeg的移植,有人使用SDL做了最終的解碼一幀影象的顯示,如此做出視訊播放器。而同時,自己在移植一款遊戲,西遊釋厄轉,一款fba遊戲模擬器,網上使用了sdl1.2引擎,然而sdl1.2用的是framebuffer,導致遊戲渲染很慢,大大降低了遊戲的流暢度,於是乎自己花費一段時間,研究sdl2.0的框架,將此遊戲的流程分析完後,把sdl2.0合入進去,使用opengles硬體加速,提高效能。

完成上面的幾個事情後,發現sdl挺好玩的,既然自己已經熟悉了基本流程,也對sdl的整體過程比較熟悉,於是就有了記錄,開始整理,畫流程,框架,想既然這個講解的比較少,那就花些心思,研究一番,整理成系列講解,於是就有了這些內容。

記住,sdl的講解,可以作為興趣學習,它不是成熟的遊戲開發引擎,但卻是非常成熟,跨平臺的一套渲染引擎。它本身做的事情非常簡單,就是讓一張圖片,可以顯示到更多平臺,同時附加一些音訊編解碼而已。誠然,sdl不是你開發遊戲的首選,但卻是不可多得的,程式碼不算複雜,可以深入學習,掌握一套跨平臺的開發流程,思路,同時理解影象格式的分類,轉化,運算的具體實現。

當然,後續我會展開,將西遊釋厄傳的移植過程,同時這個可以玩拳皇97,是不是很興奮? 在移植完遊戲的同時,我會移植一個gui庫,當前進行到一半,因為工期比較長,所以會較晚出來,在移植完gui之後,會在此框架上做一款遊戲開發,進行深入練習。

學習,往往需要持之以恆,敬請期待!!

當前工程程式碼已經上傳: