1.什么时候会发生一个像素对应多个纹素
2.一个像素对应多个纹素产生的问题
3.一个像素对应多个纹素的解决方案
1.什么时候会发生一个像素对应多个纹素
被渲染的物体表面在屏幕上的投影面积小于其纹理图像本身的分辨率时, 这个时候会发生一个像素对应多个纹素的情况具体时机包括:a.物体离相机非常远: 比如远处的一堵贴有砖墙纹理的墙, 它在屏幕上可能只占据几十个像素, 但它的纹理可能是一张1024* 1024的图片, 这个时候, 屏幕上的一个像素就覆盖了纹理上的大片区域b.使用低分辨率显示设备观看高分辨率内容c.当物体表面几乎平行于相机的视线方向(物体表面与相机之间存在锐利角度)比如地面, 当你看向远方地平线时, 地面纹理在屏幕上被极度压缩, 会导致一个像素对应纹理上的一长条纹素
想象你看着脚下, 视线望向远方长长的地面, 在靠近你脚本的地面, 它几乎是正对着你的, 变形也不大; 但靠近地平线, 地面与你的视线方向夹角就越小或者说地面越来越平行于你的视线; 在这种掠射视角下, 透视投影会产生极强的压缩效应; 屏幕上的一个像素方块反向映射到纹理空间中不再是一个方形, 而是一个被极度拉长, 变形的区域(这个区域被称为足迹)

为什么会产生足迹?足迹的产生是因为在掠射角下, 你的一个屏幕像素在3D世界里看到的不是一个点, 而是一条又细又长的走廊; 通过一个生活小实例来理解(坐在车里看高速公路):你坐在一辆车的副驾驶位置, 车子正在一条笔直的高速公路上行驶; 你正透过侧窗, 看着路边的护栏和地面1).看近处的护栏(正面视角)你低头看离你很近的护栏, 护栏上可能每隔一段就有一个反光标识(想象每个标识是一个纹素)a.你的视线: 垂直地看向侧面的护栏b.你用手指在车窗上框出一个小方块(这个方块就是一个屏幕像素)c.你看到的是什么: 这个小方块里, 可能只框住了一到两个反光标识这就好比正常的纹理映射: 一个像素对应一个或几个纹素2).看远处的路面(掠射视角)现在, 请你向前看, 看向远方的路面; 你的视线几乎是平行地擦着路面看向远方a.你的视线: 近乎水平地"掠射"过路面, 指向地平线b.你同样用手指在车窗上框出同样大小的一个小方块, 但这次把它对准远方的路面c.你看到的是什么: 在这个同样大小的方块里, 你看到了什么? 你看到的不是一小块路面, 而是一长条区域; 这一长条从离你稍近的地方开始, 一直延伸到很远很远的地方, 可能覆盖了路面上几十个不同的标记、裂缝和石子(每个都是一个纹素)这个被你用一个"像素方块"框住的"一长条路面区域", 就是那个被拉长的"足迹"3).GPU的工作就是为这个像素计算一个颜色, 它发现这个像素对应的是纹理上的一长串纹素(就像你看到的一长串路面标记)它就不能随便挑一个颜色(比如只取最远的那个标记的颜色), 而是必须把这一长串标记的颜色混合起来, 得到一个平均色,用来代表这个像素; 这个混合的过程, 就是滤波
2.一个像素对应多个纹素产生的问题
3.一个像素对应多个纹素的解决方案