SDL 使用,播放一张图片实例

一、简介

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

二、配置

sudo apt-get install libsdl1.2-dev

附加包:

sudo apt-get install libsdl-image1.2-dev

sudo apt-get install libsdl-mixer1.2-dev

sudo apt-get install libsdl-ttf2.0-dev

sudo apt-get install libsdl-gfx1.2-dev

也可以去官网下载最新的源码进行编译。

三、测试

#include "SDL/SDL.h" 
int main( int argc, char* args[] ) 

    //Start SDL 
    SDL_Init( SDL_INIT_EVERYTHING ); 
    //Quit SDL 
    SDL_Quit(); 
    return 0;     

编译命令:g++ main.c -o main -lSDL

如果程序能够编译通过并能够运行,那么SDL安装成功。

四、加载一张位图

SDL可以很方便的来加载位图。

首先拷贝一张bmp格式的图片到项目文件夹,然后修改代码如下:

#include <stdio.h> 
#include <SDL/SDL.h> 
int main() 

    //The images 
    SDL_Surface* hello = NULL; 
    SDL_Surface* screen = NULL; 
    SDL_Init( SDL_INIT_EVERYTHING ); 
    //Set up screen 
    screen = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE ); 
    //Load image 
    hello = SDL_LoadBMP( "1.bmp" ); 
    //Apply image to screen 
    SDL_BlitSurface( hello, NULL, screen, NULL ); 
    //Update Screen 
    SDL_Flip( screen ); 
    //Pause 
    SDL_Delay( 5000 );     
    //Quit SDL 
    SDL_Quit(); 
    //Free memory 
    SDL_FreeSurface( hello ); 
    //Quit SDL 
    SDL_Quit(); 
    return 0; 

编译运行:

SDL入门学习教程

如果需要加载其他格式的图片,需要添加SDL_image库

几个用到的函数解释一下:

SDL_Init():

动态的加载和初始化SDL库。 该函数带有一组标记来表示哪部分需要激活:
SDL_INIT_AUDIO
SDL_INIT_VIDEO
SDL_INIT_CDROM
SDL_INIT_TIMER
SDL_INIT_EVERYTHING
使用完毕最后调用SDL_Quit()。

SDL_SetVideoMode()


设置视频的色彩深度和分辨率

SDL_LoadBMP()

加载BMP图片

int SDL_BlitSurface(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);
4个参数都是指针——2个SDL_Surface指针,2个SDL_Rect指针。src是源面,也就是被blit的面;dst是目的面,也就是源面被blit到的面。

int SDL_Flip(SDL_Surface *screen);

交换屏幕缓冲

相关链接:SDL入门学习续-在SDL中使用OpenGL  http://www.linuxidc.com/Linux/2012-12/75256.htm

SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。从这些属性我们可以看出,SDL基本上可以认为是为以电脑游戏为核心开发的多媒体库。 SDL支持主流的操作系统,包括Windows和Linux。在官方的介绍中,我们可以找到它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. )。SDL本身从C语言开发,并且能很好的在C++等高级语言中使用。在官方可以看到SDL所支持的语言很多。(Including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk, and Tcl. ) SDL在GNU LGPL version 2下发布,这意味着你可以免费的使用。并且可以免费的用于商业软件的制作(只要你直接使用SDL的动态链接库,Windows下的SDL.dll)。如果你将SDL库编译进了自己的二进制代码中,你需要指明你所使用SDL库的版本以及包括你自己修改的源代码,并说明这些代码的原始出处。这是很宽松的法律,你可以用如此强大的多媒体库完全合法的免费开发商业游戏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值