将多个纹理组合起来映射到一个单一纹理,立方体贴图含有6个2D纹理对应每个面。
特点:立方体贴图可使用方向向量对其索引和采样,其中心位于远点(对于立方体的顶点定义而言)
![](https://img.haomeiwen.com/i3454662/17855b2cdb0fc483.png)
方向向量触及到的面的位置就是纹理坐标。
创建立方体贴图
glBindTexture的贴图类型参数为GL_TEXTURE_CUBE_MAP
依次调用glTexImage2D 6次创建,类型参数按右左上下后前依次使用:
![](https://img.haomeiwen.com/i3454662/50b0ce0ab6db93af.png)
定义环绕方式和过滤方式,环绕方式需设置S,T,R三个方向。
片段着色器中采样器的类型是samplerCube,同样使用texture函数采样,此时纹理坐标为vec3类型。
天空盒
使用立方体贴图实现天空盒
![](https://img.haomeiwen.com/i3454662/6cda0ebd4d0ac6f5.png)
天空盒是包裹整个场景的立方体
![](https://img.haomeiwen.com/i3454662/b2cc890c95e6a3ad.png)
注意:
1,绘制天空盒需要关闭深度写入,使其可以作为其他物体的背景而绘制出来。
2,为了使天空盒不会随着物体的移动而出现变近或远的现象,需要移除天空盒视图矩阵的平移部分。
环境映射
立方体贴图可能带有场景环境,物体可以反射或折射场景环境
反射reflection
![](https://img.haomeiwen.com/i3454662/a79c52751b780aaf.png)
观察者最后看到物体的颜色包含由物体反射的立方体贴图的一部分。
折射refraction
![](https://img.haomeiwen.com/i3454662/e687c48408eb65ea.png)
观察者最后看到物体的颜色包含由物体折射的立方体贴图的一部分。
折射指数决定了一个材质上光线扭曲的数量,每个材质都有自己的折射指数。下表是常见的折射指数:
![](https://img.haomeiwen.com/i3454662/4ff3913458ddbab3.png)
图片和一些文字来源于https://learnopengl-cn.github.io,本人收集作为笔记,如有侵权,望告知
网友评论