组合多个 opengl 片段着色器

Sim*_*mon 6 opengl-es image-processing fragment-shader

我想使用 OpenGL ES 将一些图像处理工作移植到 OpenGL 以提高性能。我有一个非常简单的阈值算法,但我想将额外的过滤器组合到图像中(例如对比度)。

我的第一个想法是通过使用多个片段着色器来完成这个。但是,我想很快做到这一点,所以这会导致很多状态变化吗?我读过的唯一方法是通过处理纹理然后多次调用“使用程序”来做到这一点。

有没有更有效的方法来做到这一点?理想情况下,我想在步骤中执行对比度拉伸和直方图平衡。

除非我可以将它组合成一个单一的着色器,否则 FBO 会在这里为我工作吗?

我对 OpenGL 有点陌生(以防万一你不知道)。

谢谢!

西蒙

Mat*_*gro 5

除非您手动执行,否则您无法“合并”片段着色器,因此唯一明智的选择是使用 FBO 进行“乒乓”渲染。您有 2 个 FBO,绘制到一个并从另一个读取,然后切换 FBO 并重复,在渲染之间切换片段着色器。