SDL
1. SDL简介
1.1。什么是SDL?
Simple DirectMedia Layer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频,键盘,鼠标,操纵杆和图形硬件的低级访问。视频播放软件,仿真器以及包括Valve屡获殊荣的目录和许多Humble Bundle游戏在内的流行游戏都使用它。
SDL正式支持Windows,Mac OS X,Linux,iOS和Android。在源代码中可以找到对其他平台的支持。
-
有关受支持内容的最新信息,请参阅“安装”页面。
SDL用C编写,可与C ++一起使用,并且有绑定可用于其他几种语言,包括C#和Python。
-
有关语言的最新列表,请参见http://www.libsdl.org/languages.php
SDL 2.0在zlib许可下分发。该许可证允许您在任何软件中自由使用SDL。简单DirectMedia层库(SDL)是一个通用API,可通过OpenGL和跨多个平台的2D帧缓冲区提供对音频,键盘,鼠标,操纵杆,3D硬件的低级访问。
1.2。SDL可以做什么?
预先阅读以概述SDL的功能。如果您只是对从1.2到2.0的更改感兴趣,请查看《迁移指南》。
视频
- 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独立
- 检测当前系统的字节序
- 快速交换数据值的例程
- 读取和写入指定字节序的数据
能源管理
- 查询电源管理状态
1.3。SDL在什么平台上运行?
视窗
- 使用Win32 API进行显示,并利用Direct3D进行硬件加速
-
使用DirectSound和XAudio2进行声音
Mac OS X
- 使用Cocoa进行视频显示,并利用OpenGL进行硬件加速
- 使用Core Audio播放声音
的Linux
- 使用X11进行视频显示,并利用OpenGL进行硬件加速
-
使用ALSA,OSS和PulseAudio API发出声音
的iOS
- 使用UIKit进行视频显示,并利用OpenGL ES 2.0进行硬件加速
- 使用Core Audio播放声音
安卓系统
- 使用JNI接口进行视频显示,并利用OpenGL ES 1.1和2.0进行硬件加速
- 使用JNI音频回调获取声音
-
另请参阅Android
2.如何获取和安装SDL
3.从SDL 1.2过渡到2.0
如果您以前使用过SDL 1.2,并且想使用SDL 2.0,请注意有一些API更改,并且您的某些代码需要进行修改。
迁移指南列出了功能差异以及如何使旧代码适应新的SDL 2.0: