视频播放器—纹理-渲染-窗口

简介

  • 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↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/126542237