在Android中,为了将YUV420sp传递到片段着色器,我将传递数据的信息分成Y-U-V,并以GL_LUMINANCE格式传递每个sugin glTexImage2D
但是现在我需要做我需要FBO的Offscren-Rendering,问题是FBO不支持GL_LUMINANCE。
那么在不使用GL_LUMINANCE的情况下传递YUV数据的最佳方法是什么?
顺便说一句,我无法处理CPU中的YUV并将其转换为RGB或其他东西,因为整个过程就是将YUV原样传递到GPU中。
编辑: 由于这是针对Android的,因此单通道GL_RED将无法正常工作。
答案 0 :(得分:1)
GL_LUMINANCE
在可编程管道中完全没有必要。
在最基本的层面上,它是一个黑客,它允许在固定功能管道的日子里进行纹理调配。现在,您使用GL_RED
作为单通道纹理,您可以在片段着色器中以任何方式调整它。
您要复制GL_LUMINANCE
的内容是:vec4 (texture (...).rrr, 1.0)
。您甚至可以使用ARB_texture_swizzle
在最近的OpenGL实现中在固定功能管道中执行此操作。