GLSL 内置函数

texelFetchOffset()

在整数纹素坐标上增加编译期固定偏移。

示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段

函数签名

gvec4 texelFetchOffset(gsampler2D sampler, ivec2 coord, int lod, ivec2 offset)

参数

sampler
绑定的测试纹理
coord
采样坐标
lod
mip 层级,零为原始尺寸
offset
编译期常量纹素偏移

返回值

所选 mip 层中 coord + offset 位置纹素的四个分量,不做插值。

在线示例

修改右侧代码,左侧预览会实时更新。

texelFetchOffset 做什么

在整数纹素坐标上增加编译期固定偏移。

看懂预览

基础地址 ivec2(uv*251.0)+ivec2(2) 为常量偏移 ivec2(1,0) 留出边界余量。把偏移改为 ivec2(-1,0),实际读取位置会左移两个纹素,仍不越界。

核心调用

texelFetchOffset(u_texture,ivec2(uv*251.0)+ivec2(2),0,ivec2(1,0)).rgb;

offset 必须是常量表达式,且大小受实现限制。

修改实验

把最后的偏移参数改为 ivec2(0,1)。读取位置会从基础地址右邻格换到上邻格,屏幕上网格的对齐位置随之移动。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数