【发布时间】:2014-06-17 16:19:59
【问题描述】:
我正在使用 OpenGL ES 2 和 GLSL 进行开发,但我不知道如何处理多色/分段渐变(线性和径向)。
我不知道哪种方法是最佳做法:
- 获取渐变颜色的纹理并在片段着色器中对其进行采样(本质上是使用常规纹理)。
- 计算机首先生成渐变纹理并在片段着色器中对其进行采样,如上所述(不需要 PNG 等渐变) - 缓存此纹理以保存再生。
- 在片段着色器中使用插值来按片段位置计算片段值 - 这看起来我必须使用多个 if、一个循环以及您不希望每个片段执行的东西。
- 我没有想到的其他策略。
我知道这个问题有点主观,但是在网上四处寻找信息后,我没有找到任何关于如何进行的具体信息......
【问题讨论】:
-
对于将来阅读本文的任何人 - 我选择了上面的选项 2。我在单独的帧缓冲区中生成线性/径向渐变的纹理,获取纹理,然后将其缓存以获得更好的性能。这使我能够以与常规纹理相同的方式轻松地在任意 2D 形状上绘制渐变,如纹理,从那时起保持通用。制作纹理后,性能与绘制从磁盘加载的任何图像相同。由于我只以不频繁的间隔生成梯度,因此对性能的影响可以忽略不计。希望这会有所帮助!