该函数用于将四元素向量与纹理坐标进行项目映射,并返回所获取的纹理颜色。
vec4 textureProj(sampler2D sampler, vec4 coord)
vec4 textureProj(sampler3D sampler, vec4 coord)
该函数将四元素向量coord作为位置参数,并使用纹理采样器进行纹理采样。在进行纹理采样之前,函数会将coord向量和一个投影矩阵相乘,确保纹理坐标与投影矩阵适当地对齐。最后,该函数会返回所获取的纹理颜色作为四元素向量。
返回值是一个四元素向量,代表从纹理上获取的颜色。如果sampler与coord指定的纹理坐标不在纹理范围内,则可能会返回undefined值。函数的返回值与sampler对应的纹理数据类型有关。
vec4 color = textureProj(sampler, vec4(texCoord, 1.0, 1.0));
该代码段获取位于texCoord位置,并经过投影矩阵的影响的纹理颜色,并将其存储在四元素向量color中。
如果使用的是一个纹理数组,那么该函数需要使用一个额外的坐标参数来指定纹理数组中的层。对于Cubemap纹理,则需要使用一个额外的坐标参数来指定立方体面(positive_x, negative_x, positive_y, negative_y, positive_z或者negative_z)。所有的向量,在进行纹理投影之前,都会自动被除以它们的第四个分量,以保证正确的投影。储蓄纹理可以通过函数textureGather进行读取而非textureProj。