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 层的同一纹素,因此整幅预览会成为一种采样颜色。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数