使用SDL实现一个简单的YUV播放器

本文将通过几个简单示例,最后实现一个YUV播放器


本文内容如下

  • 1、SDL的基本操作
  • 2、SDL的处理事件
  • 3、SDL的纹理渲染
  • 4、使用SDL实现YUV播放器

1.SDL的基本操作

这个例子中,使用SDL来显示一个窗口

使用SDL创建一个窗口的基本流程如下

SDL_Init 初始化SDL
SDL_CreateWindow 创建一个窗口
SDL_CreateRenderer 创建一个操作窗口的渲染器
SDL_SetRenderDrawColor 设置渲染器的渲染的格式
SDL_RenderClear 将渲染器刷到窗口上
SDL_RenderPresent 刷新窗口
Delay 延迟
SDL_DestroyRenderer 摧毁渲染器
SDL_DestroyWindow 摧毁窗口
SDL_Quit 退出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(</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值