SDL2學習筆記1-環境搭建以及Hello SDL
SDL(SimpleDirectMedia Layer)是一套開放原始碼的跨平臺多媒體開發庫,使用C語言寫成。SDL提供了數種控制影象、聲音、輸出入的函式,讓開發者只要用相同或是相似的程式碼就可以開發出跨多個平臺(Linux、Windows、Mac OS X等)的應用軟體。目前SDL多用於開發遊戲、模擬器、媒體播放器等多媒體應用領域。
採用VS2012進行開發。
第一步,下載SDL的標頭檔案以及lib庫檔案(此處為下載Visual Studio下的標頭檔案以及庫檔案)。在這裡下載:。
第二步,進行環境的搭建。
開發環境採用VS2012。
新建控制檯工程後,將下載下來的include資料夾以及
下面進行設定標頭檔案目錄以及lib庫檔案目錄。
1).標頭檔案目錄設定如下:
2).lib庫目錄設定如下(win32 Debug下設定方法):
3).附加依賴項設定
4).將下載下來的lib資料夾下x86資料夾下的SDL2.dll動態連結庫拷貝至工程Debug資料夾下。
第三步,開始編寫程式。程式如下:
程式執行現象如下://最簡單的SDL程式 //2015.8.11 //程式功能:顯示一個640*480大小的視窗,視窗內容為綠色 // //Using SDL and standard IO #include <SDL.h> #include <stdio.h> //Screen dimension constants 螢幕寬高設定 const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; int main( int argc, char* args[] ) { //The window we'll be rendering to SDL_Window* window = NULL; //The surface contained by the window SDL_Surface* screenSurface = NULL; //Initialize SDL 初始化SDL視訊子系統 if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() ); return 0; } //Create window 建立視窗 window = SDL_CreateWindow( "Hello SDL",//視窗標題 SDL_WINDOWPOS_UNDEFINED,//視窗位置設定 SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, //視窗的寬度 SCREEN_HEIGHT,//視窗的高度 SDL_WINDOW_SHOWN //顯示視窗 ); if( window == NULL ) { printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() ); return 0; } //Get window surface screenSurface = SDL_GetWindowSurface( window ); //Fill the surface green 填充顏色為綠色 SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0x00, 0xff, 0x00 ) ); //Update the surface SDL_UpdateWindowSurface( window ); //Wait two seconds 延時2000毫秒 SDL_Delay( 2000 ); //Destroy window SDL_DestroyWindow( window ); //Quit SDL subsystems SDL_Quit(); return 1; }
部分函式說明:
① : 初始化
int SDL_Init(Uint32 flags);
函式介紹
這個函式是用於初始化SDL的,你必須在呼叫其他的SDL函式之前呼叫該函式。其中
flags的引數和意義如下。當你需要初始化多個子系統的時候,可以用把這些引數或 起來。
SDL_INIT_TIMER 初始化 計時器 子系統
SDL_INIT_AUDIO 初始化 音訊 子系統
SDL_INIT_VIDEO 初始化 視訊 子系統
SDL_INIT_CDROM 初始化 光碟機 子系統
SDL_INIT_JOYSTICK 初始化 搖桿 子系統
SDL_INIT_EVERYTHING 初始化以上全部的子系統
返回值說明
返回 -1表示錯誤,返回 0表示初始化成功。
② 建立視窗
SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
int x, int y, int w,
int h, Uint32 flags);
引數含義如下。
title :視窗標題
x :視窗位置x座標。也可以設定為SDL_WINDOWPOS_CENTERED或SDL_WINDOWPOS_UNDEFINED。
y :視窗位置y座標。同上。
w :視窗的寬
h :視窗的高
flags :支援下列標識。包括了視窗的是否最大化、最小化,能否調整邊界等等屬性。
::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL,
::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS,
::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,
::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED,
::SDL_WINDOW_ALLOW_HIGHDPI.
返回建立完成的視窗的ID。如果建立失敗則返回0。
③:
int SDL_FillRect(SDL_Surface* dst,const SDL_Rect* rect,Uint32 color)
引數說明:dst為所要填充顏色的Surface型別指標,rect為填充顏色的矩形區域, color為要填充的32為無符號整型顏色值。
引數說明:color=SDL_MapRGB(dst->format,Uint8 R,Uint8 G,Uint8 B),R為紅色,G為綠色,B為藍色(範圍為0—255的16進位制的數,例如0xff,或者0XFF)。(或者由SDL_MapRGBA(SDL_Surface*format,Uint8 R,Uint8 G,Uint8 B, Uint8 A)得到,A為alpha透明度,0為完全透明,255為完全不透明)
函式說明:使用這個函式將設定的矩形區域填充為指定的顏色,成功返回0。
本測試工程下載地址:http://download.csdn.net/detail/hjl240/8990221
SDL幫助文件離線版下載地址:http://download.csdn.net/detail/hjl240/8990135