SDL(SimpleDirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
采用VS2012进行开发。
第一步,下载SDL的头文件以及lib库文件(此处为下载Visual Studio下的头文件以及库文件)。在这里下载:http://libsdl.org/download-2.0.php。
第二步,进行环境的搭建。
开发环境采用VS2012。
新建控制台工程后,将下载下来的include文件夹以及lib文件夹复制到工程目录下。
下面进行设置头文件目录以及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
#include
//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://wiki.libsdl.org/FrontPage
SDL帮助文档离线版下载地址:http://download.csdn.net/detail/hjl240/8990135