1.SDL游戏开发:环境搭建与测试

preview.jpg

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。以下基本内容来与http://lazyfoo.net/SDL_tutorials/index.php同步。

SDL游戏开发系列教程,代码基于Linux(fedora 12)测试。安装SDL开发包,首先使用yum安装,

# yum install SDL-devel SDL_mixer-devel SDL_image-devel SDL_ttf-devel
安装完成后,然后测试是否可用,

用VIM编辑测试代码,如下

#include "SDL/SDL.h"

int main( int argc, char* args[] )
{
    //Start SDL
    SDL_Init( SDL_INIT_EVERYTHING );
    
    //Quit SDL
    SDL_Quit();
    
    return 0;    
}
保存名为sdl00.cpp,在SDL编译时一定要记得加 -lSDL, 不然会出现未定义函数
[bluesky@localhost sdl]$ g++ -o sdl00 sdl00.cpp
/tmp/ccBROfgC.o: In function `main':
sdl00.cpp:(.text+0x11): undefined reference to `SDL_Init'
sdl00.cpp:(.text+0x16): undefined reference to `SDL_Quit'
collect2: ld returned 1 exit status
[bluesky@localhost sdl]$
在命令行进行编译:
g++ -o sdl00 sdl00.cpp -lSDL
./sdl00
没有任何提示,说明SDL安装成功,下面我将用一个具体的例子来说明,从最简单的用起,显示一张图片:
//Include SDL functions and datatypes
#include "SDL/SDL.h"

int main( int argc, char* args[] )
{
    //The images
    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;

    //初始化 SDL
    SDL_Init( SDL_INIT_EVERYTHING );

    //设置图像大小
    screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE );

    //导入图片,请记得在执行目录下面加入图片文件
    hello = SDL_LoadBMP( "hello.bmp" );

    //块移表面
    SDL_BlitSurface( hello, NULL, screen, NULL );

    //显示图片
    SDL_Flip( screen );

    //暂停2000ms
    SDL_Delay( 2000 );

    //释放导入的图片
    SDL_FreeSurface( hello );

    //关闭 SDL
    SDL_Quit();

    return 0;
}
保存为sdl01.cpp ,进行编译
g++ -o sdl01 sdl01.cpp -lSDL
./sdl01
将会出现一个如下的对话框,有2S的显示时间,但是,当使用Terminal从对话框拖过后,会出现如下黑色效果,关于出现如下显示原因将在后面文章解释。

第一个简的例子到此,算是完成了,其中关于SDL的函数API就不多说,API应用为主,要的时候,去找就是了,可以到http://www.libsdl.org/里面找就是了。

转载于:https://my.oschina.net/u/198124/blog/87179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值