使用 OpenGL 显示 YUY2 (Y'UV422)
Display YUY2 (Y'UV422) using OpenGL
我有一个YUY2像素格式帧的视频流,我想把它显示给用户。如果我要在Qt5的QLable中显示它,我需要先将它转换为RGB,这是相当慢的(除非你使用ffmpeg/libav家族的库,我想)。
所以我认为使用OpenGL/OpenGLES进行gpu加速转换到RGB24/RGB32(如果需要的话)并显示它会快得多。但我该怎么做呢?据我所知,这不是那么容易编写,特别是对于不太熟悉OpenGL,着色器和纹理的人。你可以假设我有一个char* pixelData
和size_t bytes, width, height
一般的想法是使用3个纹理,1(全分辨率)用于Y组件,2(半宽度)用于Cb和Cr。
然后你写一个片段着色器,在相同的标准化坐标下采样所有3个纹理,并使用这里的矩阵从YUV转换到RGB。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- OpenGL 16 位模板缓冲区?
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 在 openGL 中多次绑定缓冲区
- 使用 OpenGL 显示 YUY2 (Y'UV422)