一、下载
进入官网 http://www.libsdl.org/ ,网站相当简洁,直接在左下角找下载链接即可
点 SDL 2.0,转到 2.0 页面,现在最新的是 2.04,拉到下面找开发库
我们用 windows 下 MinGW 的:SDL2-devel-2.0.4-mingw.tar.gz (MinGW 32/64-bit)
二、安装
安装方法有两个,一个是单独目录安装,更简洁的办法的是直接合并到 MinGW 目录中去。
1、解压下载好的压缩包,得到 SDL2-2.0.4 目录,里面同时有 32 位的和 64 位的。
2、这里我们只采用 32 位:把 SDL2-2.0.4\i686-w64-mingw32 子目录下的所有文件和目录拷贝到 MinGW 的 32 位安装目录下 MinGW_w64\i686\i686-w64-mingw32,同名文件夹合并即可。
三、代码
// gcc -mwindows -o tsdl tsdl.c -lSDL2 -lSDL2main #include <stdio.h> #include <SDL2\SDL.h> #undef main int main(int argc, char *argv[]) { SDL_Window *pWindow = NULL; SDL_Renderer *pRenderer = NULL; // 1. initialize SDL if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { printf("Failed to initialize SDL2 : %s\n", SDL_GetError()); return 0; } // 2. create window pWindow = SDL_CreateWindow("Title : Test SDL2", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN); if(NULL == pWindow) { printf("Failed to create window : %s\n", SDL_GetError()); return 0; } // 3. create renderer pRenderer = SDL_CreateRenderer(pWindow, -1, 0); // 4. clear the window to RGB(255, 127, 64) SDL_SetRenderDrawColor(pRenderer, 255, 127, 64, SDL_ALPHA_OPAQUE); SDL_RenderClear(pRenderer); // 5. show the window and display 5s SDL_RenderPresent(pRenderer); SDL_Delay(5000); // 6. exit SDL_Quit(); return 0; }
注意:
1、int main(int argc, char *argv[]) 函数必须照此,不能 void 参数或 void 返回值。
2、int main(int argc, char *argv[]) 函数前面必须要有 #undef main
不然会报错:undefined reference to `WinMain@16'
另外,windows 下的 SDL 不支持多线程!
只能考虑过滤器方法,比如:
…… int process_events(const SDL_Event *event); int main(int argc, char *argv[]) { …… SDL_SetEventFilter(process_events); …… // 主循环 while (!quited) { SDL_PollEvent(NULL); …… } return 0; } int process_events(const SDL_Event *event) { switch (event->type) { case ……: …… case ……: …… case ……: …… } return 0; }