本文将通过几个简单示例,最后实现一个YUV播放器
本文内容如下
1、SDL的基本操作
2、SDL的处理事件
3、SDL的纹理渲染
4、使用SDL实现YUV播放器
1.SDL的基本操作
这个例子中,使用SDL来显示一个窗口
使用SDL创建一个窗口的基本流程如下
函数详解
函数介绍:
初始化SDL,必须在调用其他SDL函数之前调用此函数
参数:
flags:
SDL_INIT_TIMER 初始化计时器系统
SDL_INIT_AUDIO 初始化音频系统
SDL_INIT_VIDEO 初始化视频系统
SDL_INIT_JOYSTICK 初始化遥杆系统
SDL_INIT_EVERYTHING 初始化所有系统
返回值:
-1表示错误,0表示成功
int SDL_Init(Uint32 flags);
函数介绍:
创建一个窗口
参数:
title:窗口名称
x:窗口起始位置x坐标
y:窗口起始位置y坐标
w:窗口宽度
y:窗口高度
flags:
SDL_WINDOW_OPENGL 使用OpenGL
SDL_WINDOW_SHOWN 窗口可见
SDL_WINDOW_RESIZABLE 窗口能改变大小
...
返回值:
成功返回创建好的窗口,失败返回NULL
SDL_Window *SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags);
函数介绍:
使用此函数为窗口创建2D呈现上下文
参数:
window:SDL_CreateWindow所创建的窗口
index:初始化的渲染设备的索引,设置“-1”则初始化默认的渲染设备
flags:
SDL_RENDERER_SOFTWARE 使用软件渲染
SDL_RENDERER_ACCELERATED 使用硬件加速
SDL_RENDERER_PRESENTVSYNC 和显示器的刷新率同步
返回值:
成功返回创建好的渲染器,失败返回NULL
SDL_Renderer *SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags);
函数介绍:
使用此函数可设置用于绘图操作的颜色
参数:
renderer:要操作的渲染器
r:颜色R分量
g:颜色G分量
b:颜色B分量
a:颜色A分量
返回值:
成功返回0,失败返回负的错误码
int SDL_SetRenderDrawColor(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a);
函数介绍:
使用此函数可以用绘图颜色清除当前呈现目标
参数:
renderer:要操作的渲染器
返回值:
成功返回0,失败返回负的错误码
int SDL_RenderClear(SDL_Renderer * renderer);
函数介绍:
此函数用于更新屏幕
参数:
renderer:要操作的渲染器
void SDL_RenderPresent(SDL_Renderer * renderer);
函数介绍:
使用此函数可以破坏窗口的呈现上下文和自由关联的纹理
参数:
renderer:要操作的渲染器
void SDL_DestroyRenderer(SDL_Renderer * renderer);
函数介绍:
使用此函数可以破坏窗口
参数:
window:要操作的窗口
void SDL_DestroyWindow(SDL_Window * window);
源码
#include <SDL.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
SDL_Window *pSDLWindow = NULL;
SDL_Renderer *pSDLRender = NULL;
SDL_Init(SDL_INIT_VIDEO); /* 初始化视频系统 */
/* 创建一个起点(0,0),大小640x480的可视窗口 */
pSDLWindow = SDL_CreateWindow("sdl window", 0, 0, 640, 480 ,SDL_WINDOW_SHOWN);
if(</