GLSL 内置函数

texture2DProj()

用最后一个坐标分量作透视除法后采样二维纹理。

示例版本:GLSL ES 1.00 / WebGL 1示例阶段:片段

函数签名

vec4 texture2DProj(sampler2D sampler, vec3 coord)

参数

sampler
绑定的测试纹理
coord
采样坐标

返回值

先把坐标前两个分量除以最后一个分量,再过滤采样得到的 vec4。

在线示例

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

texture2DProj 做什么

用最后一个坐标分量作透视除法后采样二维纹理。

看懂预览

vec3(uv*(0.3+uv.x),0.7) 的实际采样位置是 uv*(0.3+uv.x)/0.7。把末尾 0.7 改为 1.0,坐标扩张会减弱,网格显示范围也会改变。

核心调用

texture2DProj(u_texture,vec3(uv*(0.3+uv.x),0.7)).rgb;

除数不能为零;vec4 重载会用 q 分量作除数。

修改实验

把投影参数改为 vec3(uv,1.0)。除以 1 后 uv 不变,网格和文字便恢复未经扭曲的排列。

规范

GLSL ES 1.00 built-in functions, chapter 8

相关函数