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。