如何在不转换OpenGL ES中的rgb的情况下显示yuv格式的数据?

ddy*_*lee 3 rgb opengl-es yuv

我正在研究iOS的OpenGL ES.我想知道YUV格式的数据可以在不转换RGB的情况下显示.在大多数情况下,yuv数据必须转换RGB才能显示.但是,转换过程非常缓慢,那就是不能顺利显示. 所以,我想尝试显示YUV数据而不转换为RGB.可能吗?如果可能,我该怎么办? 请让我给出一个建议.

Sai*_*aif 5

我认为在OpenGL ES中不可能在不转换为RGB数据的情况下显示YUV数据.


jpa*_*pap 5

您可以使用OpenGL ES 2.0着色器轻松完成此操作.我使用这种技术为我的超快iOS相机应用程序SnappyCam.片段着色器将执行矩阵乘法以将您从YCbCr(" YUV")带到RGB.您可以将每个{Y, Cb, Cr}通道放在单独的GL_LUMINANCE纹理中,或者如果您的色度数据已经交错,则{Cb, Cr}使用GL_LUMINANCE_ALPHA纹理将纹理组合在一起(Apple将其称为双平面格式).

请参阅Apple A4上YUV到RGBA问题的相关答案,我应该使用着色器还是NEON?这里是StackOverflow.

您也可以使用ES 1.1的固定渲染管道执行此操作,但我还没有尝试过.我会看一下纹理混合函数,例如在OpenGL Texture Combiners Wiki页面中给出的.