在Android中,为了将数据传递到片段着色器中,我传递将数据拆分为Y-U-V的信息,并以GL_LUMINANCE格式传递每个sugin glTexImage2D
但是现在我需要做我需要FBO的Offscren渲染,问题是FBO不支持GL_LUMINANCE。
那么,在不使用 GL_LUMINANCE 的情况下传递 YUV 数据的最佳方法是什么?
顺便说一句,我无法在 CPU 中处理 YUV 并将其转换为 RGB 或其他东西,因为重点是将 YUV 按原样传递到 GPU 中。
编辑:由于这是针对Android的,因此单通道GL_RED将无法正常工作,因此尚未实现。
GL_LUMINANCE
在可编程管道中是完全不必要的。
在最基本的层面上,这是一个黑客,允许在固定函数管道时代进行纹理旋转。如今,您将GL_RED
用于单通道纹理,并且可以在片段着色器中以任何您想要的方式旋转它。
您要复制GL_LUMINANCE
的是:vec4 (texture (...).rrr, 1.0)
。您甚至可以在最近的 OpenGL 实现中的固定函数管道中使用 ARB_texture_swizzle
执行此操作。