type
status
date
slug
summary
tags
category
icon
password
SDL是什么
Simple DirectMedia Layer 是一个跨平台的开发库,它提供了对音频,键盘,鼠标,游戏手柄的底层访问接口.以及通过OpenGL或者Direct3D控制图形硬件的接口.
目前支持以下平台:
- Windows
- Linux
- Android
- IOS
- MacOS
SDL可以做什么
- 视频播放器
- 音频处理
- 输入事件处理,比如键盘,鼠标等
- 文件I/O
- 线程,定时器等其余功能
SDL的核心架构
几个子系统
- Video:图像控制以及线程和事件管理
- Audio:声音控制
- Joystick: 游戏摇杆控制
- Window: 视窗管理与集成
- Event: 事件驱动处理
- Haptic: 触摸事件处理
- Timer : 时间,计时器管理
SDL本身其实不复杂,甚至有些简陋,单靠SDL你是无法实现一个完善的产品的,往往都需要其他功能库的支持.比如SDL广泛用于音视频播放器开发,但是SDL很多时候只是作为一个跨平台,Window的集成功能,而视频编解码则是通过其他功能库,如FFMPEG等处理的.
所以,SDL核心之一就是跨平台.
想一个问题,如何将一幅图像显示到屏幕上,我们知道视频其实是有一帧帧的图像数据组成,解决了图像显示到屏幕上的问题就解决了大部分问题.首先我们得从固定格式的图像中,比如JPEG,PNG等格式中解析出原始的图像数据,然后利用OPenGL操作GPU进行处理,经过渲染管线处理,形成像素数据存储到内存中,显示器按照刷新率刷新时,将像素数据映射到屏幕上,形成了我们看到的图像.
而SDL主要做两件事,一个就是加载各种格式的图像数据,一个就是封装OpenGL或者Direct3D API,更简单的渲染
还有一个就是视窗管理与集成,这个功能也有一些其他的代替库,比如GLFW之类的.
拓展模块
- SDL_image : 各种图像格式解析与载入,如png,jpeg等
- SDL_mixer : 声音输出方法和声音格式支持,比如mp3,ogg等
- SDL_net : 网络支持
- SDL_ttf : TrueType字体渲染支持
- SDL_rtf: RTF渲染支持
- 作者:姜康
- 链接:https://jiangkang.tech/article/ab738db7-6db8-4880-bae8-49ace004497f
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章