(一)SDL介绍

FFmpeg编程(三)SDL开发

(二)SDL安装

FFmpeg编程(三)SDL开发 

1.源码下载:http://www.libsdl.org/download-2.0.php

2.生成Makefile文件

./configure --prefix=/usr/local

3.安装

sudo make -j 8 && sudo make install

FFmpeg编程(三)SDL开发

FFmpeg编程(三)SDL开发

FFmpeg编程(三)SDL开发

FFmpeg编程(三)SDL开发

二:SDL的简单使用

SDL播放视频的代码流程如下所示:

初始化: 

SDL_Init(): 初始化SDL。 

SDL_CreateWindow(): 创建窗口(Window)。 

SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。 

SDL_CreateTexture(): 创建纹理(Texture)。

循环渲染数据: 

SDL_UpdateTexture(): 设置纹理的数据。 

SDL_RenderCopy(): 纹理复制给渲染器。
SDL_RenderPresent(): 显示。

(一)基本使用步骤

FFmpeg编程(三)SDL开发

(二)SDL渲染窗口

FFmpeg编程(三)SDL开发

1.SDL_Init/SDL_Quit 初始化和退出操作

https://blog.csdn.net/leixiaohua1020/article/details/40680907

int SDLCALL SDL_Init(Uint32 flags)

其中,flags可以取下列值:

SDL_INIT_TIMER:定时器
SDL_INIT_AUDIO:音频
SDL_INIT_VIDEO:视频
SDL_INIT_JOYSTICK:摇杆
SDL_INIT_HAPTIC:触摸屏
SDL_INIT_GAMECONTROLLER:游戏控制器
SDL_INIT_EVENTS:事件
SDL_INIT_NOPARACHUTE:不捕获关键信号(这个不理解)
SDL_INIT_EVERYTHING:包含上述所有选项

2.SDL_CreateWindow()/SDL_DestroyWindow() 创建窗口(比如将图片渲染到窗口)

https://blog.csdn.net/leixiaohua1020/article/details/40701203

SDL_Window * SDLCALL SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags);

参数含义如下:https://blog.csdn.net/qq_25333681/article/details/89787867

title :窗口标题
x :窗口位置x坐标。也可以设置为SDL_WINDOWPOS_CENTERED或SDL_WINDOWPOS_UNDEFINED。
y :窗口位置y坐标。同上。
w :窗口的宽
h :窗口的高
flags :支持下列标识。包括了窗口的是否最大化、最小化,能否调整边界等等属性。
       ::SDL_WINDOW_FULLSCREEN,    ::SDL_WINDOW_OPENGL,
       ::SDL_WINDOW_HIDDEN,        ::SDL_WINDOW_BORDERLESS,
       ::SDL_WINDOW_RESIZABLE,     ::SDL_WINDOW_MAXIMIZED,
       ::SDL_WINDOW_MINIMIZED,     ::SDL_WINDOW_INPUT_GRABBED,
       ::SDL_WINDOW_ALLOW_HIGHDPI.
 返回创建完成的窗口的ID。如果创建失败则返回0。

3.SDL_CreateRenderer() 创建渲染器(将图像/视频帧汇聚到窗口)

SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags);

参数含义如下:

window : 渲染的目标窗口。
index :打算初始化的渲染设备的索引。设置“-1”则初始化默认的渲染设备。
flags :支持以下值(位于SDL_RendererFlags定义中)
    SDL_RENDERER_SOFTWARE :使用软件渲染
    SDL_RENDERER_ACCELERATED :使用硬件加速
    SDL_RENDERER_PRESENTVSYNC:和显示器的刷新率同步
    SDL_RENDERER_TARGETTEXTURE :不太懂
返回创建完成的渲染器的ID。如果创建失败则返回NULL。

(三)简单实例(未渲染)

#include <stdio.h>
#include <SDL.h>

int main(int argc,char* argv[]){
    SDL_Window* wind = NULL;

    SDL_Init(SDL_INIT_VIDEO);    //进行视频初始化

    wind = SDL_CreateWindow("SDL2 Window",
        200,200,
        640,480,
        SDL_WINDOW_SHOWN);    //显示、有边界

    if(!wind){
        printf("Failed to Create window!\n");
        goto __EXIT;
    }

    while(1){
        sleep(5000);
    }

    SDL_DestroyWindow(wind);

__EXIT:
    SDL_Quit();
    return 0;
}
View Code

相关文章: