您的位置:首页 > 其它

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

2015-08-11 13:40 656 查看
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 <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;
}
程序运行现象如下:



部分函数说明:

① : 初始化

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: