立方体贴图

将多个纹理组合起来映射到一个单一纹理,立方体贴图含有6个2D纹理对应每个面。

特点:立方体贴图可使用方向向量对其索引和采样,其中心位于远点(对于立方体的顶点定义而言)

立方体贴图_第1张图片
立方体贴图采样

方向向量触及到的面的位置就是纹理坐标。

创建立方体贴图

glBindTexture的贴图类型参数为GL_TEXTURE_CUBE_MAP

依次调用glTexImage2D 6次创建,类型参数按右左上下后前依次使用:

立方体贴图_第2张图片
参数

定义环绕方式和过滤方式,环绕方式需设置S,T,R三个方向。

片段着色器中采样器的类型是samplerCube,同样使用texture函数采样,此时纹理坐标为vec3类型。

天空盒

使用立方体贴图实现天空盒

立方体贴图_第3张图片
天空盒

天空盒是包裹整个场景的立方体

立方体贴图_第4张图片
天空盒

注意:

1,绘制天空盒需要关闭深度写入,使其可以作为其他物体的背景而绘制出来。

2,为了使天空盒不会随着物体的移动而出现变近或远的现象,需要移除天空盒视图矩阵的平移部分。

环境映射

立方体贴图可能带有场景环境,物体可以反射或折射场景环境

反射reflection

立方体贴图_第5张图片
反射原理

观察者最后看到物体的颜色包含由物体反射的立方体贴图的一部分。

折射refraction

立方体贴图_第6张图片
折射原理

观察者最后看到物体的颜色包含由物体折射的立方体贴图的一部分。

折射指数决定了一个材质上光线扭曲的数量,每个材质都有自己的折射指数。下表是常见的折射指数:

立方体贴图_第7张图片
不同材质的折射指数

图片和一些文字来源于https://learnopengl-cn.github.io,本人收集作为笔记,如有侵权,望告知


你可能感兴趣的:(立方体贴图)