立方体贴图
2017-01-20 本文已影响0人
龙遁流
将多个纹理组合起来映射到一个单一纹理,立方体贴图含有6个2D纹理对应每个面。
特点:立方体贴图可使用方向向量对其索引和采样,其中心位于远点(对于立方体的顶点定义而言)

方向向量触及到的面的位置就是纹理坐标。
创建立方体贴图
glBindTexture的贴图类型参数为GL_TEXTURE_CUBE_MAP
依次调用glTexImage2D 6次创建,类型参数按右左上下后前依次使用:

定义环绕方式和过滤方式,环绕方式需设置S,T,R三个方向。
片段着色器中采样器的类型是samplerCube,同样使用texture函数采样,此时纹理坐标为vec3类型。
天空盒
使用立方体贴图实现天空盒

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

注意:
1,绘制天空盒需要关闭深度写入,使其可以作为其他物体的背景而绘制出来。
2,为了使天空盒不会随着物体的移动而出现变近或远的现象,需要移除天空盒视图矩阵的平移部分。
环境映射
立方体贴图可能带有场景环境,物体可以反射或折射场景环境
反射reflection

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

观察者最后看到物体的颜色包含由物体折射的立方体贴图的一部分。
折射指数决定了一个材质上光线扭曲的数量,每个材质都有自己的折射指数。下表是常见的折射指数:

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