一、簡介
SDL(Simple DirectMedia Layer)是一套開放原始碼的跨平台多媒體開發庫,使用C語言寫成。SDL提供了數種控製圖像、聲音、輸出入的函數,讓開發人員只要用相同或是相似的代碼就可以開發出跨多個平台(Linux、Windows、Mac OS X等)的應用軟體。目前SDL多用於開發遊戲、模擬器、媒體播放器等多媒體應用領域。
二、配置
sudo apt-get install libsdl1.2-dev
附加元件封裝:
sudo apt-get install libsdl-image1.2-dev
sudo apt-get install libsdl-mixer1.2-dev
sudo apt-get install libsdl-ttf2.0-dev
sudo apt-get install libsdl-gfx1.2-dev
也可以去官網下載最新的源碼進行編譯。
OpenSuse下的安裝方法如下.
首先安裝opengl的相關包:
sudo zypper in Mesa-devel freeglut-devel MesaGLw-develzypper in Mesa-devel freeglut-devel MesaGLw-devel
然後安裝sdl
sudo zypper in SDL-devel
三、測試
#include "SDL/SDL.h"int main( int argc, char* args[] ){ //Start SDL SDL_Init( SDL_INIT_EVERYTHING ); //Quit SDL SDL_Quit(); return 0; }
編譯命令:g++ main.c -o main -lSDL
如果程式能夠編譯通過並能夠運行,那麼SDL安裝成功。
四、載入一張位元影像
SDL可以很方便的來載入位元影像。
首先拷貝一張bmp格式的圖片到專案檔夾,然後修改代碼如下:
#include <stdio.h>#include <SDL/SDL.h>int main(){ //The images SDL_Surface* hello = NULL; SDL_Surface* screen = NULL; SDL_Init( SDL_INIT_EVERYTHING ); //Set up screen screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE ); //Load image hello = SDL_LoadBMP( "1.bmp" ); //Apply image to screen SDL_BlitSurface( hello, NULL, screen, NULL ); //Update Screen SDL_Flip( screen ); //Pause SDL_Delay( 5000 ); //Quit SDL SDL_Quit();//Free memory SDL_FreeSurface( hello ); //Quit SDL SDL_Quit(); return 0;}
編譯運行:
如果需要載入其他格式的圖片,需要添加SDL_image庫。
幾個用到的函數解釋一下:
SDL_Init():
動態載入和初始化SDL庫。 該函數帶有一組標記來表示哪部分需要啟用:
SDL_INIT_AUDIO
SDL_INIT_VIDEO
SDL_INIT_CDROM
SDL_INIT_TIMER
SDL_INIT_EVERYTHING
使用完畢最後調用SDL_Quit()。
SDL_SetVideoMode()
設定視頻的色彩深度和解析度
SDL_LoadBMP()
載入BMP圖片
int SDL_BlitSurface(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);
4個參數都是指標——2個SDL_Surface指標,2個SDL_Rect指標。src是源面,也就是被blit的面;dst是目的面,也就是源面被blit到的面。
int SDL_Flip(SDL_Surface *screen);
交換螢幕緩衝
參考:
SDL英文教程-http://lazyfoo.net/