GLSL 内置函数

textureSize()

查询某个 mip 层级的纹理尺寸。

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

函数签名

ivec2 textureSize(gsampler2D sampler, int lod)

参数

sampler
绑定的测试纹理
lod
mip 层级,零为原始尺寸

返回值

整数向量,表示所选 mip 层级不含边框的纹素尺寸。

在线示例

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

textureSize 做什么

查询某个 mip 层级的纹理尺寸。

看懂预览

textureSize(u_texture,int(u_parameter*7.0)).x/256.0 为每个 mip 绘出一个固定高度。滑块从 0 调到 1 时,宽度从 256 变为 2,线会从 y = 1 降到接近零。

核心调用

float(textureSize(u_texture,int(u_parameter*7.0)).x)/256.0;

尺寸来自纹理对象,不是画布;层级改变,宽高也改变。

修改实验

把 textureSize 的层级表达式改成 2。256×256 测试图的该层宽度为 64,除以 256 后,水平结果线位于 y = 0.25。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数