Simple DirectMedia Layer (SDL) 是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频,键盘,鼠标,操纵杆和图形硬件的低级访问。 它用于视频播放软件,模拟器和流行的游戏,包括Valve的获奖目录和许多Humble Bundle出品的游戏。
SDL正式支持Windows,Mac OS X,Linux,iOS和Android。 可以在源代码中找到对其他平台的支持。
SDL是用C语言编写的,用C ++编写,并且有一些其他语言的绑定,包括C#和Python。
SDL 2.0是根据zlib许可证分发的。 此许可证允许您在任何软件中自由使用SDL。
SDL 主要功能
视频
- 3D图形:
- SDL可以与OpenGL API或Direct3D API(用于3D图形)结合使用
- 加速2D渲染API:
- 支持轻松旋转,缩放和alpha混合,所有加速使用现代3D API
- 使用OpenGL和Direct3D支持加速,并且有一个软件回退
- 创建和管理多个窗口
输入事件
- 提供的事件和API函数:
- 应用程序和窗口状态更改
- 鼠标输入
- 键盘输入
- 操纵杆和游戏控制器输入
- 多点触摸手势
- 每个事件可以使用 SDL_EventState() 启用或禁用,
- 在发布到内部事件队列之前,事件通过用户指定的过滤器函数传递
- 线程安全事件队列
强制反馈
- 在Windows,Mac OS X和Linux下支持强制反馈
音频
- 设置8位和16位音频,单声道立体声或5.1环绕声的音频播放,如果硬件不支持格式,可选择转换
- 音频在单独的线程中独立运行,通过用户回调机制填充
- 专为定制软件音频混音器而设计,但SDL_mixer提供了完整的音频/音乐输出库
文件I/O抽象
- 用于打开,读取和写入数据的通用抽象
- 内置支持文件和内存
共享对象支持
- 加载共享对象(Windows上为DLL,Mac OS X上为.dylib,Linux上为.so)
- 共享对象中的查找函数
线程
- 简单线程创建API
- 简单线程本地存储API
- 互斥体,信号量和条件变量
- 无锁编程的原子操作
计时器
- 获取已过去的毫秒数
- 等待指定的毫秒数
- 创建在单独的线程中与代码一起运行的计时器
- 使用高分辨率计数器进行性能分析
CPU特性检测
- 查询CPU数量
- 检测CPU功能和支持的指令集
字节序独立(Endian Independence )
- 检测当前系统的字节顺序
- 用于快速交换数据值的例程
- 读取和写入指定字节序的数据
能源管理
- 查询电源管理状态