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

------------------------------------全系列文章目录------------------------------------

简介
  • SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成;其封装了复杂的视音频底层交互工作,简化了视音频处理的难度;多用于开发游戏、模拟器、媒体播放器等多媒体应用领域;
    在这里插入图片描述

  • OpenGL(Open Graphics Library - 开放图形库)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API),这个接口由近350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。

大致渲染流程
  • 初始化阶段:
    • 创建一个可与OpenGL一起使用的窗口
    • 基于该窗口,创建一个2D渲染器
    • 为渲染器创建纹理
  • 渲染显示阶段:
    • 接收原始图像信息,保存图像信息的描述至纹理中
    • 将纹理的指定区域复制到渲染器中,进行渲染操作
    • 将渲染出来的图像显示在屏幕上
      在这里插入图片描述
相关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);
    
    • window:用于显示渲染的窗口
    • 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);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值