FFmpeg与OpenGL与SDL

FFmpeg+SDL

FFmpeg可以实现视频的解码,将原始视频文件转换为YUV,而这些像素数据不能直接显示在屏幕上。SDL就是将像素数据“画”在屏幕上,实现YUV屏幕的转换。

SDL与OpenGL

SDL是跨平台的多媒体库,旨在提供对音频,键盘,鼠标,操纵杆等的低级访问。它还通过OpenGL支持3D硬件。SDL实际上是对底层绘图API(Direct3D,OpenGL)的封装,使用起来明显简单于直接调用底层 API。

OpenGL是由SGI公司1992年7月发布,是一款基于桌面操作系统、功能强大、调用方便的底层3D图形库。 它是与硬件无关的软件接口, 可以在windows/Linux/Unix 之间移植。OpenGL主要是为了实现3D特效而来,系统需要这样的特性时,目前是有XGL这样的东西将X的需求交给OPENGL来渲染,最终输出,所以要渲染全景视频就要用到OpenGL。

但搜索相资料时,我发现两者有单独使用又有混用,关系不容易搞清,参考了一下回答:

  • SDL应该也是一个主要处理2D的,可能在处理3D一些的时候使用OPENGL,所以它加入了OPENGL的支持,不能算是SDL内置了OPENGL,只能说是SDL内部加入了接口封装了OPENGL,你可以使用也可以不使用。

  • SDL使用OpenGL作为需要在某些平台上进行硬件渲染的内容的硬件渲染器。 如果您拥有这样的平台,则OpenGL是底层的API,SDL是其基础。
    SDL处理输入,窗口创建,图像加载以及OpenGL无法处理的其他一些功能。

  • 关于旋转图形的示例:使用OpenGL(即硬件加速)比使用SDL本身(即在CPU上)更好,因为它通常是计算密集型的(特别是如果您有很多位图来旋转每一帧, 您希望效果平滑)。
    现在很多game游戏里面,都采用 SDL+OpenGL ES 的模式来绘制3D界面。 可以让SDL使用OpenGL ES的函数接口来渲染3D。

  • SDL 做的工作就是用X11创建窗口,用EGL创建Surface并绑定,最后就可以用OpenGL或者GLES去render。SDL下的direct3d, opengl, gdi是同类型的,用于render

参考链接:
SDL内置了调用OpenGL的函数,但是为什么还有人用SDL+OPENGL编程?.

SDL 和 OpenGL 关系.

为什么SDL和OpenGL相关?.

另:

一、新时代的图形接口

Vulkan(opengl 5.0)
Direct3D 12(微软)
Metal(支持苹果)

二、OpenGL context(环境)

  • 桌面平台(Windows Mac Linux)
    GLFw是创建一个OpenGL context的库, GLAD关于OpenGL API的库
  • Qt平台 QOpenglWidget
  • 移动平台(Android,iOS) EGL( 手机用OpenGL ES)

三、关于OpenGL的库

在这里插入图片描述

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值