SDL 2 游戏编程(零)配置环境
- 从官网下载 SDL 2,code block默认使用的是 MinGW编译器,所以最好下载图片中箭头指着那个版本。 下载完成后解压文件,里面会包含i686-w64-mingw32 文件夹和x86_64-w64-mingw32 文件夹,前面那个是32位的,后面的是64位的,即便用的是64位的系统,很多编译器依然是32位的编译器,所以推荐使用32位的文件夹。
- 在code block中创建一个新的空项目。设置好位置,一路next~
- 移步Project->Properties,在打开的配置窗口中点击Project’s build options。
- 弹出的窗口中选择Search directories选项卡,子选项卡选择Compiler。这一步需要告诉编译器SDL2头文件的位置,添加地址如图所示(以第一步中解压后文件的地址为准,下同)。 如果编译时出现can’t find SDL.h一类的编译错误,说明这一步你搞砸了。
- 这一步我们要告诉编译器库文件的位置啦~,子选项卡选择Linker然后添加库文件的地址,如图所示。 如果编译时出现了can’t find lSDL2, lSDL2main一类的错误,则是这一步搞砸了。
- 选择Linker setting选项卡,并复制粘贴下面这行链接指令。 -lmingw32 -lSDL2main -lSDL2
- 第一步中解压出来的文件中有个动态链接库文件SDL2.dll,把这个文件拷贝到C:WindowsSysWOW64 (64位系统)或者C:WINDOWSSYSTEM32 (32位系统)文件夹中。
- 建立一个新的cpp文件,添加如下代码到这个文件中。
/*This source code copyrighted by Lazy Foo Productions (2004-2015) and may not be redistributed without written permission.*/ //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 well be rendering to SDL_Window* window = NULL; //The surface contained by the window SDL_Surface* screenSurface = NULL; //Initialize SDL if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "SDL could not initialize! SDL_Error: %s ", SDL_GetError() ); } else { //Create window window = SDL_CreateWindow( "SDL Tutorial", 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 ", SDL_GetError() ); } else { //Get window surface screenSurface = SDL_GetWindowSurface( window ); //Fill the surface white SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) ); //Update the surface SDL_UpdateWindowSurface( window ); //Wait two seconds SDL_Delay( 2000 ); } } //Destroy window SDL_DestroyWindow( window ); //Quit SDL subsystems SDL_Quit(); return 0; }
编译运行,出现一个白色的窗口就成功啦~