赞
踩
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL使用GNU宽通用公共许可证为授权方式,意指动态链接(dynamic link)其库并不需要开放本身的源代码。因此诸如《雷神之锤4》等商业游戏也使用SDL来开发。这种跨平台特性和 OpenGL 是一样的,差别在与 OpenGL 是 Khronos Group 组织开发维护的一个接口规范,具体的实现是由驱动厂商完成。而 SDL 是把要兼容平台的相关接口都给封装好了,然后才对外提供统一的接口。
由于 SDL 的跨平台特性,在后续学习 FFmpeg 时就可以利用 SDL 进行音视频的播放操作,而不用像在 Android 平台上开发 FFmpeg 还需要额外编译 so、编写JNI和界面,另外 ffplay 源码里面也是用的 SDL 进行播放的。
简单总结,SDL库的作用就是封装了复杂的视音频底层操作,简化了视音频处理的难度。
进入SDL管网:http://www.libsdl.org/ 进行下载即可。选择自己需要的版本,记得下载那个带vc的SDL2-devel-2.0.22-VC.zip版本。
解压后如下所示:
SDL库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:
SDL将功能分成下列数个子系统(subsystem):
SDL与DirectX比较对应关系:
以下是一支用C语言写成、非常简单的SDL示例:
#include <iostream>
#include <SDL2/SDL.h>
using namespace std;
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;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。