SDL2学习:SDL2简单操作

SDL2新特性

  • 全3D硬件加速
  • 支持OpenGL3.0+的多种配置(核心、兼容性、调试、鲁棒性等)
  • 支持OpenGL ES
  • 支持多窗口
  • 支持多显示器
  • 支持多音频设备
  • 安卓和IOS系统的支持
  • 简单的2D渲染API,它可以利用 Direct3D, OpenGL, OpenGL ES, 或者幕后的软件渲染。
  • 自适应于 Windows, Mac OS X 和Linux 操作系统
  • Windows中支持XInput 和 XAudio2
  • 原子操作
  • 电源管理(显示剩余电池的电量等)
  • 适应形状的窗口
  • 32位音频(整型和浮点型)
  • 简化的游戏控制器API(摇杆的API这里也有)
  • 触控支持(多点触控、手势识别等)
  • 更好的全屏支持
  • 更好的键盘支持(扫描码与键码等)
  • 消息框
  • 剪贴板支持
  • 基本的拖放支持
  • 许多其他的事情!

SDL2 显示视频的结构体

SDL显示视频涉及到下列结构体:

SDL_Window:代表了窗口
SDL_Renderer:代表了渲染器
SDL_Texture:代表了纹理
SDL_Rect:一个矩形框,用于确定纹理显示的位置。

上述几个结构体之间的关系如下图所示:
image

SDL2 显示视频流程

image
从图中可以看出,整体的流程可以概括为如下步骤:

  1. 初始化:SDL_Init()
  2. 创建SDL_Window:SDL_CreateWindow()
  3. 创建SDL_Render:SDL_CreateRenderer()
  4. 创建SDL_Texture:SDL_CreateTexture()
  5. 更新SDL_Texture:SDL_UpdateTexture()
  6. 渲染SDL_Texture:SDL_RenderCopy()
  7. 显示:SDL_RenderPresent()
  8. 返回步骤4继续执行
    上图中显示了SDL播放视频的时候API的调用流程。下文总结一下在不同的系统以及渲染技术下,这些SDL的API和系统底层API之间的调用关系。

使用SDL播放一个视频代码流程大体如下
初始化:

SDL_Init(): 初始化SDL。 
SDL_CreateWindow(): 创建窗口(Window)。 
SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。 
SDL_CreateTexture(): 创建纹理(Texture)。 

循环渲染数据:

SDL_UpdateTexture(): 设置纹理的数据。 
SDL_RenderCopy(): 纹理复制给渲染器。 
SDL_RenderPresent(): 显示。

参考链接

SDL 1.2 到 2.0 迁移指南
SDL2源代码分析8:视频显示总结

posted @ 2022-07-17 16:29  小超不挑食  阅读(2130)  评论(0编辑  收藏  举报