纹理环绕方式
| 环绕方式 | 描述 | 对应OpenGL选项 |
|---|---|---|
| 重复 | 重复纹理图像 | GL_REPEAT |
| 镜像重复 | 和重复一样,但每次重复图片是镜像放置的 | GL_MIRRORED_REPEAT |
| 边缘钳制 | 纹理坐标会被约束在0到1之间,超出的部分会重复纹理坐标的边缘 | GL_CLAMP_TO_EDGE |
| 边界钳制 | 超出的坐标为用户指定的边缘颜色 | GL_CLAMP_TO_BORDER |

纹理过滤
纹理坐标为0~1的任意浮点值,当将其映射到位图中并进行采样时:
- 若图像分辨率较小,则会出现多个采样点采样到同一个像素点;
- 若图像分别率较大,则会出现多个采样点在图像上对应的位置跨度较大; 这都将导致纹理看起来不自然。
邻近过滤 Nearest Neighbor Filtering
邻近过滤会直接采用最接近采样点的像素

线性过滤 (Bi)linear Filtering
线性过滤会基于采样点附近的像素,计算出一个插值,近似出这些纹理像素之间的颜色。一个像素的中心距离采样点越近,那么这个像素的颜色对最终的样本颜色的贡献越大。

两种过滤方式效果对比

多级渐远纹理 Mipmap
前面说过,若图像分别率较大,则会出现多个采样点在图像上对应的位置跨度较大,而当渲染的物体距离摄像机较远 或 物体被缩放时,此时的纹理采样点便会较少,难以从高分辨的图像上采样到准确的颜色,因为需要跨过纹理的很大部分却只拾取一个像素颜色。 多级渐远纹理 Mipmap便是用来解决该问题,其核心原理是预先生成一系列逐渐缩小的纹理层级,每个层级是上一级的1/4分辨率(长宽各减半)。当物体在屏幕上较远或较小时,系统自动选择合适层级的纹理。