简介
-
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成;其封装了复杂的视音频底层交互工作,简化了视音频处理的难度;多用于开发游戏、模拟器、媒体播放器等多媒体应用领域;
OpenGL(Open Graphics Library - 开放图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。
大致渲染流程
初始化阶段:
-
创建一个可与OpenGL一起使用的窗口
-
基于该窗口,创建一个2D渲染器
-
为渲染器创建纹理
渲染显示阶段:
-
接收原始图像信息,保存图像信息的描述至纹理中
-
将纹理的指定区域复制到渲染器中,进行渲染操作
-
将渲染出来的图像显示在屏幕上
本文福利, 免费领取C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓
相关API
-
SDL_CreateWindow:在特定位置创建一个指定大小、名字和种类的窗口
SDL_Window *SDL_CreateWindow(const char *title, int x, int y,
int w, int h, Uint32 flags);
-
title:窗口的名字
-
x,y:位置
-
w,h:宽高
-
flags:描述窗口的种类,描述值为SDL_WindowFlags;如SDL_WINDOW_OPENGL,表示可用于OpenGL的窗口。
-
SDL_CreateRenderer:为窗口创建一个2D渲染器
SDL_Renderer *SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags);
indow:用于显示渲染的窗口
index:要初始化的渲染驱动程序索引,-1则表示选取第一个支持该请求标志的驱动程序
flags:渲染器标识,描述值为SDL_RendererFlags;如SDL_RENDERER_ACCELERATED,表示渲染器使用硬件加速
SDL_CreateTexture:为渲染器创建一个纹理
SDL_Texture * SDL_CreateTexture(SDL_Renderer *renderer, Uint32 format,
int access, int w, int h);
renderer:用于渲染纹理的渲染器
format:纹理数据的格式
access:纹理访问模式,描述值为SDL_TextureAccess;如SDL_TEXTUREACCESS_STREAMING,表示纹理更改频繁,可锁定
w,h:纹理数据的宽高(以像素为单位)
SDL_UpdateTexture:用新的像素数据更新指定纹理区域
int SDL_UpdateTexture(SDL_Texture *texture, const SDL_Rect *rect,
const void *pixels, int pitch);
-
texture:待更新的纹理
-
rect:表示要更新纹理的区域,NULL表示更新整个纹理区域
-
pixels:像素数据
-
pitch:一行像素数据中的字节数,包括行之间的填充
SDL_RenderCopy:将纹理的指定区域复制到渲染器
int SDL_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture,
const SDL_Rect *srcrect, const SDL_Rect *dstrect);
-
renderer:目的渲染器
-
texture:源纹理
-
srcrect:纹理指定区域,NULL表示整个纹理区域
-
dstrect:渲染结果的目标大小,NULL为整个窗口大小
SDL_RenderPresent:将渲染器的渲染结果显示在屏幕上
void SDL_RenderPresent(SDL_Renderer * renderer);
本文福利, 免费领取C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓