1.装载:
SDL的其他函数必须在这个函数将SDL装载之后才能够正常调用。
int SDL_Init
(Uint32 flags);
falgs定义在sdl.h文件中,有如下几种:
#define SDL_INIT_TIMER 0x00000001
#define SDL_INIT_AUDIO 0x00000010
#define SDL_INIT_VIDEO 0x00000020
#define SDL_INIT_CDROM 0x00000100
#define SDL_INIT_JOYSTICK 0x00000200
#define SDL_INIT_NOPARACHUTE 0x00100000 /* Don't catch fatal signals */
#define SDL_INIT_EVENTTHREAD 0x01000000 /* Not supported on all OS's */
#define SDL_INIT_EVERYTHING 0x0000FFFF
SDL_INIT_TIMER | Initializes the timer subsystem. |
SDL_INIT_AUDIO | Initializes the audio subsystem. |
SDL_INIT_VIDEO | Initializes the video subsystem. |
SDL_INIT_CDROM | Initializes the cdrom subsystem. |
SDL_INIT_JOYSTICK | Initializes the joystick subsystem. |
SDL_INIT_EVERYTHING | Initialize all of the above. |
SDL_INIT_NOPARACHUTE | Prevents SDL from catching fatal signals. |
SDL_INIT_EVENTTHREAD |
Returns -1 on an error or 0 on success.
2.检测装载了哪些flags:
Uint32 SDL_WasInit
(Uint32 flags);
在检测多个flags或者SDL_INIT_EVERYTHING时,返回存在的flag,都不存在则返回0。
在检测某个flag时,如果存在返回flag本身,不存在则返回0。
3.退出:
void SDL_Quit
(void);
通常,我们在可以预测程序结束的时候直接使用语句:SDL_Quit();
更多的时候,以及SDL官方文档里面,也推荐使用:atexit(SDL_Quit);
atexit()函数的形参为函数指针,这个形参函数需要满足:返回类型为void,并且没有形参,atexit(function)在main()正常结束以及异常结束的时候,都会自动调用function()函数,所以,在我们不可预知程序是否会异常,或者不清楚程序什么时候结束的时候,需要做某些善后,atexit()是个很好的选择。
4.SDL flags的中途装载:
int SDL_InitSubSystem
(Uint32 flags);
返回值为0则成功装载,-1则失败.
5.SDL某些flags的中途退出:
void SDL_QuitSubSystem
(Uint32 flags);
NOTE:
在没有使用SDL_Init()时,可以使用SDL_WasInit()进行检测,也可以使用SDL_Quit().