本文参考http://www.cnblogs.com/wangguchangqing/p/5900426.html
SDL使用介绍
SDL是一套开放源代码的跨平台的多媒体开发库,使用c语言编写,主要用于开发游戏、模拟器、媒体播放器等多媒体领域,内置了调用OpenGL 接口函数,并且还提供了一些控制图像、声音输入输出的函数。
- SDL_Image:首先SDL库仅仅支持windows的bitmap格式的显示,SDL_Image接口则增加了多种图片格式的封装接口,比较常见的支持格式包括bmp,png,jpeg,jif。如果需要显示png、jpeg等格式的数据,还需要额外添加对应图片的解码接口,例如添加libpng或者是libjpg库。
SDL_ttf:此库主要用于显示文字
int DrawText(SDL_Surface *pScreen,const char *pszText,unsigned int nSize,int x,int y,SDL_Color color) { const char *pszFontName="arial.ttf"; TTF_Font *pFont; SDL_Surface *pTextSurface; SDL_Rect rect; //打开字体文件并设置字体大小 if((pFont = TTF_OpenFont(pszFontName,nSize)) == NULL) { debug("call TTF_Open failed\n"); return -1; } TTF_SetFontStyle(pFont,TTF_STYLE_BOLD|TTF_STYLE_NORMAL); rect.x = x; rect.y = y; rect.w = rect.h = 0; SDL_Color bg = {0,255,255}; if((pTextSurface = TTF_RenderText_Blended(pFont,pszText,color)) == NULL) { debug("call TTF_RenderUTF8_Solid failed\n"); } else { SDL_BlitSurface(pTextSurface,NULL,pScreen,&rect); } //释放内存显示环境 SDL_FreeSurface(pTextSurface); //刷新当前显示环境 SDL_Flip(pScreen);//flash the screen //关闭字体 TTF_CloseFont(pFont); return 0; }
调用过程如下
主要调用过程如下: SDL_Color color = {255,0,0}; TTF_Init(); //TTF 初始化 DrawText(pScreen,"SDL Demo",30,10,10,color); TTF_Quit(); //销毁TTF
总结上述输出文本的流程可归纳为:TTF_Init–>TTF_OpenFont(申请字体句柄并获取获取字体结构体)–>TTF_SetFontStyle(设置SDL绘制的字体类型)–>TTF_RenderText_Blended(获取临时渲染内存)–>SDL_BlitSurface(将内存按位传递给显示区域)–>SDL_FreeSurface(释放临时渲染内存区域)–>SDL_Flip(更新显示)–>TTF_CloseFont(关闭申请的字体句柄);
SDL_Event SDL事件可以分为如下四种
1.键盘事件 2.鼠标事件 3.游戏杆事件 4 系统事件SDL_timer 定时器相关的函数
SDL_GetTicks 获取从SDL初始化到当前的运行时间
SDL_GetPerformanceCounter 当前的滴答数
SDL_GetPerformanceFrequency 频率
SDL_Delay 设置延迟类似于usleep
SDL_AddTimer 添加定时器返回ID,并回调函数
---->Uint32 (* SDL_TimerCallback)( ):返回值为下次回调的时间差
SDL_RemoveTimer移除对应ID的定时器