texture2D() 函数
,
-
返回值
返回一个
vec4类型的向量
,该向量包含了从纹理中采样得到的颜色。这个 vec4向量的四个分量,分别对应于颜色的红色(R)、绿色(G)、蓝色(B)和透明度(A,即Alpha)值,
每个分量的值范围,通常是
从0.0到1.0
,其中,
0.0表示:该颜色分量完全没有贡献
,
1.0表示:该颜色分量完全贡献
。 -
使用场景
通常用于,片段着色器
(Fragment Shader)中,
用于根据每个片段(像素)的纹理坐标,从纹理中采样颜色。
通过这种方式,可以在渲染的几何体上应用纹理,从而实现更丰富的视觉效果,如:表面细节、图案或图片映射。
例子
precision lowp float;varying vec2 vUv; // 顶点着色器传过来的,表示,每个片段(像素)在纹理图像上的UV坐标varying float vElevation; // 顶点着色器传过来的,表示,每个顶点的高度信息,这里用它来影响片段的颜色uniform sampler2D uTexture; // 这是一个统一变量,指向一个二维纹理图像void main() {// gl_FragColor = vec4(vUv, 0.0, 1.0);// float height = vElevation + 0.05 * 10.0;// gl_FragColor = vec4(1.0*height,0.0, 0.0, 1.0);`使用texture2D()函数,根据UV坐标,从uTexture纹理中采样颜色,texture2D()函数,返回的是一个包含RGBA四个分量的vec4向量。`vec4 textureColor = texture2D(uTexture, vUv);// 根据UV,取出对应的颜色float height = vElevation+(0.05*20.0); `将顶点的高度vElevation,增加了一个固定值``将采样得到的纹理颜色(仅RGB部分)与计算出的高度值相乘,意味着,高度越高,纹理颜色会越亮(或越深,取决于纹理颜色的初始亮度)这是一个简单的,颜色调制过程,用于,根据高度信息,改变纹理的视觉效果。`textureColor.rgb *= height;`gl_FragColor:这是GLSL内置的输出变量,用于存储片元的最终颜色,将用于渲染到屏幕上`gl_FragColor = textureColor;
}