SDL學習筆記 1 環境搭建

2021-10-14 08:23:28 字數 3211 閱讀 3910

簡單介紹sdl,並且搭建mac下的命令列開發環境。用乙個簡單的例子,驗證開發環境的正確性。

sdl是乙個跨平台開發庫,支援windows,mac os x,linux,ios和android。sdl封裝了各個平台不同的系統底層介面,而提供給上層開發者統一的介面,大大簡化開發者對音訊,鍵盤,滑鼠,操縱桿和圖形硬體的低階訪問。

比如,跨平台的圖形硬體訪問功能,windows平台上sdl是通過封裝direct3d實現的,那麼在mac平台就是通過封裝opengl來實現。開發者不需要關注各個平台的底層介面細節,只需要關注sdl 提供的介面即可。

sdl有兩個主要版本,1.x和2.x。在2.x中增加使用了硬體來加速渲染等等很多的改動。如果沒有必要,我們從2.0開始學習就可以了。而且,目前官方wiki只有2.0的開發文件。

學習sdl這樣乙個跨平台庫如何處理平台差異性,如何對底層介面進行封裝。

這部分屬於擴充套件部分,後面有時間會專門來學習記錄。

我這裡使用的mac開發環境,從這個鏈結上可以找到各個平台的開發包,包括mac平台的,目前mac平台最新支援版本是sdl2-2.0.14.dmg。

另外,我們還需要一些擴充套件庫的支援。比如sdl本身支援bmp格式的,而sdl擴充套件庫支援png型別的,可大大節省儲存空間。這正是擴充套件庫sdl_image所能做的。此外,還有sdl_ttf, sdl_mixer等擴充套件庫,這裡因為沒有用到,不展開來說也不安裝。

不過,我這裡只是簡單的使用,我準備採用命令列方式編譯連線。因此,我這裡沒有使用ide。

使用brew安裝sdl開發庫:

$ brew install sdl2 sdl2_image

warning: sdl2 2.0

.12_1 is already installed and up-to-date

to reinstall 2.0

.12_1, run `brew reinstall sdl2`

warning: sdl2_image 2.0

.5 is already installed and up-to-date

to reinstall 2.0

.5, run `brew reinstall sdl2_image`

使用命令列編譯

gcc your_c_code.c `pkg-config --cflags --libs sdl2 sdl2_image`
通過初始化和銷毀的函式,我們來初識sdl程式設計,主要目的是驗證我們的環境的正確定。

在呼叫sdl大部分函式前,必須首先呼叫 sdl_init() ;在sdl應用程式退出之前,應呼叫sdl_quit() 以安全關閉所有子系統,包括預設子系統。sdl_init呼叫完成後,可以呼叫sdl_initsubsystem初始化一些sdl_init沒有初始化的子系統,同樣的,使用sdl_quitsubsystem來關閉這些子系統。

通過第乙個例項,簡單了解一下這四個函式。

檔案命名為sdl_init_and_shutdown.c:

//sdl_init_and_shutdown.c

#include

#include

intmain

(int argc,

char

* ar**)

printf

("sdl init video audio subsystem success !\n");

//在sdl_init呼叫後,初始化一些sdl_init沒有初始化的子系統if(

0==sdl_initsubsystem

(sdl_init_joystick)

)//退出

sdl_quit()

;printf

("sdl quit all !\n");

return0;

}

編譯執行,使用-o 將編譯出來的可執行檔案 命名為 sdl_init_and_shutdown

gcc sdl_init_and_shutdown.c `pkg-config --cflags --libs sdl2 sdl2_image` -o sdl_init_and_shutdown
輸出

$ .

/sdl_init_and_shutdown

sdl init video audio subsystem success !

sdl init joystick subsystem success !

sdl quit joystick subsystem success !

sdl quit all !

首先,驗證了我們的環境是沒問題的。

其次,我們大致認識了一下sdl的,video和audio兩個子系統。並且,在中途初始化了搖桿子系統,做了一些操作。sdl支援的子系統共有7個,如下表所示。

flag

value

sdl_init_timer

timer subsystem

sdl_init_audio

audio subsystem

sdl_init_video

video subsystem; automatically initializes the events subsystem

sdl_init_joystick

joystick subsystem(遙桿子系統); automatically initializes the events subsystem

sdl_init_haptic

haptic (force feedback) subsystem(觸覺反饋子系統)

sdl_init_gamecontroller

controller subsystem; automatically initializes the joystick subsystem(遊戲控制子系統)

sdl_init_events

events subsystem

sdl_init_everything

all of the above subsystems

sdl_init_noparachute

compatibility; this flag is ignored

[1]. introduction to sdl 2.0

CUDA學習筆記(1) 環境搭建

cuda從入門到精通 一 環境搭建 nvidia於2006年推出cuda compute unified devices architecture 可以利用其推出的gpu進行通用計算,將平行計算從大型集群擴充套件到了普通顯示卡,使得使用者只需要一台帶有geforce顯示卡的筆記本就能跑較大規模的並行...

openGL學習筆記(1) 環境搭建

參考環境 windows 10 企業版 visual studio 2015 glfw 3.3.2 cmake 3.18.0 win32 x86 構建glfw glfw是乙個專門針對opengl的c語言庫,它提供了一些渲染物體所需的最低限度的介面。將glfw加入到專案中 方法一 將生成的glfw3....

QT學習筆記(1) 環境搭建

一 qt簡介 qt是乙個跨平台應用程式和ui開發框架。二 qt環境搭建 1 本人的電腦環境及所需安裝包 win10 64位系統 vs版本 vs2013 qt版本 qt5.6.2 for windows 64 bit vs 2013 vs add in visual studio add in 2.0...