C++ 使用OpenGL显示YUY2(Y';UV422)

C++ 使用OpenGL显示YUY2(Y';UV422),c++,opengl,opengl-es,qt5,C++,Opengl,Opengl Es,Qt5,我有一个YUY2像素格式的视频流,我想把它显示给用户。如果要在Qt5的QLable中显示它,我需要先将其转换为RGB,这相当慢(我想,除非您使用ffmpeg/libav库系列) 因此,我认为使用OpenGL/OpenGLES进行GPU加速的RGB24/RGB32转换(如果需要的话)并显示它会快得多。但是我该怎么做呢?据我所知,编写起来并不容易,特别是对于不太熟悉OpenGL、着色器和纹理的人来说。您可以假设我有一个char*pixelData和size\u t字节、宽度、高度一般的想法是使用3种

我有一个YUY2像素格式的视频流,我想把它显示给用户。如果要在Qt5的QLable中显示它,我需要先将其转换为RGB,这相当慢(我想,除非您使用ffmpeg/libav库系列)


因此,我认为使用OpenGL/OpenGLES进行GPU加速的RGB24/RGB32转换(如果需要的话)并显示它会快得多。但是我该怎么做呢?据我所知,编写起来并不容易,特别是对于不太熟悉OpenGL、着色器和纹理的人来说。您可以假设我有一个
char*pixelData
size\u t字节、宽度、高度

一般的想法是使用3种纹理,1(全分辨率)用于Y分量,2(半宽度)用于Cb和Cr

然后编写一个片段着色器,在同一标准化坐标下对所有3个纹理进行采样,并使用矩阵从YUV转换为RGB