GLSL 内置函数
texelFetch()
按整数纹素坐标读取指定层级,不做插值。
示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段
函数签名
gvec4 texelFetch(gsampler2D sampler, ivec2 coord, int lod)参数
- sampler
- 绑定的测试纹理
- coord
- 采样坐标
- lod
- mip 层级,零为原始尺寸
返回值
指定整数坐标与 mip 层级处单个纹素的四个分量,不经过过滤。
在线示例
修改右侧代码,左侧预览会实时更新。
texelFetch 做什么
按整数纹素坐标读取指定层级,不做插值。
看懂预览
ivec2(uv*255.0) 用整数地址读取 256 像素测试图,不混合相邻纹素。把 255.0 改为 127.0,较小坐标范围的图像会被放大。
核心调用
texelFetch(u_texture,ivec2(uv*255.0),0).rgb;
坐标必须落在对应层级范围内,不使用归一化 UV。
修改实验
把 texelFetch 中变化的坐标改为 ivec2(128,128)。每个片段都读取第 0 层的同一纹素,因此整幅预览会成为一种采样颜色。