初识SDL


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渲染支持

文章作者: 姜康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜康 !
评论
 上一篇
Android中的存储路径 Android中的存储路径
存储数据的几种方式 应用专属存储空间 应用专属空间里的数据会在应用被卸载的时候删除,清除缓存通常指的是清除缓存文件下的文件,清空数据则是清空所有cache,files下文件,如果想让其他APP可以访问这些私有数据,可以利用FileProvi
2020-05-08
下一篇 
Flutter-Timeline Flutter-Timeline
Flutter有三种构建模式: debug release profile 在profile模式下,我们可以看到frame rendering图: Frame Rendering Chart 横轴表示每一帧,纵轴表示帧渲染时间。红色表示
2020-05-08
  目录