SDL库的作用说白了就是封装了复杂的视音频底层操作,简化了视音频处理的难度。
以下转自WiKi:
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL使用GNU宽通用公共许可证为授权方式,意指动态链接(dynamic link)其库并不需要开放本身的源代码。因此诸如《雷神之锤4》等商业游戏也使用SDL来开发。
结构
虽然SDL时常被比较为‘跨平台的DirectX’,然而事实上SDL是定位成以精简的方式来完成基础的功能,它大幅度简化了控制图像、声音、输出入等工作所需撰写的代码。但更高级的绘图功能或是音效功能则需搭配OpenGL和OpenAL等API来达成。另外它本身也没有方便创建图形用户界面的函数。
SDL在结构上是将不同操作系统的库再包装成相同的函数,例如SDL在Windows平台上其实是DirectX的再包装,旧版本包装的是DirectX 5,现时的版本(SDL 1.2)则是DirectX 7。而在使用X11的平台上(包括Linux),SDL则是与Xlib库沟通来输出图像。
虽然SDL本身是使用C语言写成,但是它几乎可以被所有的编程语言所使用,例如:C++、Perl、Python(借由pygame库)、Pascal等等,甚至是Euphoria、Pliant这类较不流行的编程语言也都可行。
SDL库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:
SDL_image—支持时下流行的图像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。
SDL_mixer—更多的声音输出函数以及更多的声音格式支持。
SDL_net—网络支持。
SDL_ttf—TrueType字体渲染支持。
SDL_rtf—简单的RTF渲染支持。
子系统
SDL将功能分成下列数个子系统(subsystem):
Video(图像)—图像控制以及线程(thread)和事件管理(event)。
Audio(声音)—声音控制
Joystick(摇杆)—游戏摇杆控制
CD-ROM(光盘驱动器)—光盘媒体控制
Window Management(视窗管理)-与视窗程序设计集成
Event(事件驱动)-处理事件驱动
以下是一支用C语言写成、非常简单的SDL示例:
// Headers #include "SDL.h" // Main function int main(int argc, char* argv[]) { // Initialize SDL if(SDL_Init(SDL_INIT_EVERYTHING) == -1) return(1); // Delay 2 seconds SDL_Delay(2000); // Quit SDL SDL_Quit(); // Return return 0; }
SDL与DirectX比较对应关系:
SDL | DirectX | 说明 |
SDL_Video、SDL_Image、OpenGL | DirectDraw、Direct3D | |
SDL_Audio、SDL_Mixer | DirectSound | |
SDL_Joystick、SDL_Base | DirectInput | |
SDL_Net | DirectPlay | |
SMPEG、SDL_Video、SDL_Audio、SDL_Sound、SDL_Filter | DirectShow |
使用SDL开发的游戏:
《Spore》
《Tux Paint》
《Simutrans》
《Stepmania》
《Frozen Bubble》
《无冬之夜》(Neverwinter Nights)
《魔法门之英雄无敌III》(Heroes of Might and Magic III)(Linux版)
《模拟城市3000》(Sim City 3000)(Linux版)
《虚幻竞技场》(Unreal Tournament)(Linux版)
《虚幻竞技场2003》(Unreal Tournament 2003)(Linux版)
《虚幻竞技场2004》(Unreal Tournament 2004)(Linux版)
《第二人生》(Second Life)(Linux版)
《佣兵战场》(Soldier of Fortune)(Linux版)
《韦诺之战》(Battle for Wesnoth)
Bos Wars
相关推荐
SDL介绍-STRIDE威胁建模方法
SDL介绍包括SDL概述、SDL语言基础、数据模型、结构模型、行为模型
SDL函数库详细介绍,方便对SDL库感兴趣的广大程序员,欢迎大家免费下载!
SDL官方中文资料,介绍SDL基本用法,并附有一些实例。
个人介绍 滴滴SDL建设历程概览 滴滴SDL建设历程详解 滴滴SDL现在与未来
本书介绍了SDL2上基础的几个部分,学完本书相信大家基本学会了SDL2的使用方法。对于本书的源码全部在 Android平台C4droid用g++编译器编译通过。当然我希望源代码在你的开发平台上总要有一点小问题,自己动手,...
在官方的介绍中,我们可以找到 它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. )。SDL 本身从 C 语言开发...
SDL_ttf技术代码介绍SDL_FreeSurface( background ); SDL_FreeSurface( message ); //Close the font that was used TTF_CloseFont( font ); //Quit SDL_ttf TTF_Quit(); //Quit SDL SDL_Quit();
SDL常用函数库介绍
SDL2 扩展库 虽然SDL为多个系统提供了广泛的API,但它忽略了某些领域,而在其他领域缺乏功能。扩展库解决了这个问题,以模块化方式添加了更多功能。...我们将在本课程中介绍如何设置和使用SDL_Image和SDL_Mixer。
SDL拼图源代码,上边有详细的代码介绍,用C++语言编写的
SDL概念介绍、项目生命周期中的安全风险、SDL如何介入研发流程、SDL的最佳实践等
设计大型通信协议用的开发工具SDL的介绍性书籍,书名为:Systems_Engineering_with_SDL_Developing_Performance_Critical_Communication_Systems.pdf
1、介绍SDL流程 2、SDL相关工具 2、SDL体系建设介绍
SDL其使用用途很多,本文挡主要用于说明如何在linux中使用SDL显示图片,并详细介绍所涉及到的函数详细用法。
介绍使用SDL2进行游戏开发的书SDL Game Development 中配套的源代码。
SDL系列教程 我要向大家介绍一个非常出名的游戏开发库――SDL。
基于FFmpeg+SDL的视频播放器_其它文档,包含视频编码格式标准文档与VS开发的基础文档。
SDL 英文手册,详细介绍,其中包括音频部分,视频部分。