天天看点

SDL2学习笔记1-环境搭建以及Hello SDL

SDL(SimpleDirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

采用VS2012进行开发。

第一步,下载SDL的头文件以及lib库文件(此处为下载Visual Studio下的头文件以及库文件)。在这里下载:http://libsdl.org/download-2.0.php。

SDL2学习笔记1-环境搭建以及Hello SDL

第二步,进行环境的搭建。

开发环境采用VS2012。

新建控制台工程后,将下载下来的include文件夹以及lib文件夹复制到工程目录下。

下面进行设置头文件目录以及lib库文件目录。

1).头文件目录设置如下:

SDL2学习笔记1-环境搭建以及Hello SDL

2).lib库目录设置如下(win32 Debug下设置方法):

SDL2学习笔记1-环境搭建以及Hello SDL

3).附加依赖项设置

SDL2学习笔记1-环境搭建以及Hello SDL

4).将下载下来的lib文件夹下x86文件夹下的SDL2.dll动态链接库拷贝至工程Debug文件夹下。

第三步,开始编写程序。程序如下:

//最简单的SDL程序
//2015.8.11
//程序功能:显示一个640*480大小的窗口,窗口内容为绿色
//
//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 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;
}

           

程序运行现象如下:

SDL2学习笔记1-环境搭建以及Hello SDL

部分函数说明:

①  : 初始化

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

继续阅读