如何在不GL_LUMINANCE的情况下将 YUV 数据传递到片段着色器中



在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 执行此操作。

最新更新