(一)SDL介绍
(二)SDL安装
1.源码下载:http://www.libsdl.org/download-2.0.php
2.生成Makefile文件
./configure --prefix=/usr/local
3.安装
sudo make -j 8 && sudo make install
二:SDL的简单使用
SDL播放视频的代码流程如下所示:
初始化:
SDL_Init(): 初始化SDL。
SDL_CreateWindow(): 创建窗口(Window)。
SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。
SDL_CreateTexture(): 创建纹理(Texture)。
循环渲染数据:
SDL_UpdateTexture(): 设置纹理的数据。
SDL_RenderCopy(): 纹理复制给渲染器。
SDL_RenderPresent(): 显示。
(一)基本使用步骤
(二)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; }