一、簡介
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
也可以去官網下載最新的源碼進行編譯。
三、測試
#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入門學習續-在SDL中使用OpenGL http://www.linuxidc.com/Linux/2012-12/75256.htm