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:一个矩形框,用于确定纹理显示的位置。
上述几个结构体之间的关系如下图所示:
SDL2 显示视频流程
从图中可以看出,整体的流程可以概括为如下步骤:
- 初始化:SDL_Init()
- 创建SDL_Window:SDL_CreateWindow()
- 创建SDL_Render:SDL_CreateRenderer()
- 创建SDL_Texture:SDL_CreateTexture()
- 更新SDL_Texture:SDL_UpdateTexture()
- 渲染SDL_Texture:SDL_RenderCopy()
- 显示:SDL_RenderPresent()
- 返回步骤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(): 显示。