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渲染支持
用SDL写个HelloWorldWebSocket
姜康
姜康
一个软件工程师
公告
type
status
date
slug
summary
tags
category
icon
password
🎉博客网站重新制作了🎉
👏欢迎更新体验👏