我正在用OpenGL ES 3.0实现特征提取算法(给定具有1且大部分为0的输入纹理,生成带有标记特征区域的输出纹理)。我在片段着色器中遇到的问题是如何在中间vec或float而不是采样器上执行“查找”。
从概念上讲,每个vec或float都是一个texel值的函数,因此应该有一种方法可以在给定texel坐标的情况下获取其值,例如textureLikeLookup(texel_valued,v_color)-但我还没有找到与纹理*功能。
我看到的选项是:
是否有更好/自然的方法来解决此问题?换句话说,做这样的事情
// works, because tex_sampler is a sampler2D
vec4 texel_valued = texture(tex_sampler, v_color);
当数据不是sampler2D而是vec时:
// doesn't work, because texel_valued is not a sampler but a vec4
vec4 oops = texture(texel_valued, v_color);