SDL ( Simple DirectMedia Layer ) 是一套开放源代码的 跨平台多媒体开发库 ,使用 C 语
言写成。 SDL 提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的
代码就可以开发出 跨多个平台( Linux 、 Windows 、 Mac OS X 等) 的应用软件。目前 SDL 多
用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
SDL 的“标准库”
SDL_image —支持时下流行的图像格式: BMP 、 PPM 、 XPM 、 PCX 、 GIF 、 JPEG 、 PNG 、 TGA 。
SDL_mixer —更多的声音输出函数以及更多的声音格式支持。
SDL_net —网络支持。
SDL_ttf — TrueType 字体渲染支持。
SDL_rtf — 简单的 RTF 渲染支持。
SDL 可以干什么
视频
3D 图形:
SDL 可以与 OpenGL API 或 Direct3D API 结合使用,用于 3D 图形
加速 2D 渲染 API :
支持简单旋转,缩放和 Alpha 混合,所有这些都使用最新的 3D API 加速
使用 OpenGL 和 Direct3D 支持加速
创建和管理多个窗口
输入事件
提供的事件和 API 方法如下:
应用程序和窗口状态更改
鼠标输入
键盘输入
操纵杆和游戏控制器输入
多点触控手势
可以使用 SDL_EventState ()启用或禁用每个事件
在发布到内部事件队列之前,事件将通过用户指定的过滤器函数传递
线程安全事件队列
音频
设置 8 位和 16 位音频,单声道立体声或 5.1 环绕声的音频播放,如果硬件不支持格式,
可选择转换
音频在单独的线程中独立运行,通过用户回调机制处理
专为自定义软件音频混音器而设计,其中 SDL_mixer 提供完整的音频 / 音乐输出库
文件 I / O 抽象
通用抽象开放,读写数据
内置支持文件和内存支持
共享对象支持
加载共享对象( Windows 上的 DLL , Mac OS X 上的 .dylib , Linux 上的 .so )
共享对象中的查找方法 , 调用
线程
简单线程创建 API
简单 线程本地存储 API
互斥量,信号量和条件变量
用于无锁编程的原子操作
计时器
获取流逝的毫秒数
等待指定的毫秒数
在单独的线程中创建与代码并行运行的计时器
使用高分辨率计数器进行分析
CPU 特征检测
查询 CPU 数量
检测 CPU 功能和支持的指令集
支持大小端检测
检测当前系统的字节顺序
用于快速交换数据值的例程
读取和写入指定字节数据的数据
电源管理
查询电源管理状态
SDL2.0 知识框架体系
SDL 视频渲染 主要涉及到 四个对象 :
- SDL_Window
- SDL_Surface
- SDL_Render
- SDL_Texture
- SDL_Event
SDL 视频渲染 主要涉及到 相关 API :
初始化:
SDL_Init(): 初始化 SDL
SDL_CreateWindow(): 创建窗口( Window )
SDL_CreateRenderer(): 基于窗口创建渲染器( Render )
SDL_CreateTexture(): 创建纹理( Texture )
循环渲染数据:
SDL_UpdateTexture(): 设置纹理的数据
SDL_RenderCopy(): 纹理复制给渲染器
SDL_RenderPresent(): 显示
退出:
SDL_DestroyWindow()
SDL_DestroyRenderer()
SDL_DestroyTexture()
SDL_Quit()
SDL 主要涉及到 几个扩展库 :
- SDL_image
- SDL_mixer
- SDL_ttf