1

我对 GLSL 很陌生,但我正在尝试在片段着色器中编写卷积核以进行图像处理。当我的内核很小(3x3)使用常量矩阵时,我能够做到这一点。但是,现在我想使用大小为 9x9 的内核。或者对于任意大小的问题。我最初的想法是设置一个包含卷积核的纹理内存。然后使用 2Dsampler 读取内核的纹理内存并将其与图像的纹理内存(也是 2Dsampler)进行卷积。这是解决这个问题的正确方法吗?

我想你也可以制作一个包含系数的任意大小的数组。这可能适用于 81 个系数,但如果你想要更大的系数会发生什么?比如说20x20?

一般来说,如果您需要在 GLSL 中访问多个大对象,那么正确的策略是什么?谢谢!谢谢,

D

4

2 回答 2

1

顺序访问:

  1. 顶点属性

随机访问:

  1. 如果源是缓冲区,则纹理缓冲区/统一块
  2. 如果来源很小,则制服
  3. 否则纹理
于 2011-03-07T12:45:48.663 回答
0

是的,由于统一和恒定的空间是有限的,使用纹理作为替换是一个很好的策略。

于 2011-03-07T11:51:58.037 回答