什么是纹理映射(Texture Mapping)

纹理映射是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程。

一张纹理是由一系列的像素组成的(所以叫做texel,翻译为“纹理像素”或“纹理元素”),每个像素基于纹理的宽和高对应一个纹理坐标。这些纹理坐标沿着uv坐标(u为宽,v为高)被映射到[0,1]范围内。这个过程叫做UV映射,坐标被称为UV坐标。

当你绘制一个多边形时,会计算三角形中每个顶点的UV坐标。这三个UV坐标决定在pixal shader中如何将一张纹理应用到多边形上。当u或v值小于0或大于1时,会根据设置的纹理寻址模式(texture address mode)决定应用的方式。当设置为TextureAddressMode.Border时,任何UV映射超出[0,1]范围的像素的颜色会被设置成纹理边界的颜色。当设置成 TextureAddressMode.Clamp时,会使用最近像素的颜色。设置为TextureAddressMode.Wrap 表示重复纹理。当设置为TextureAddressMode.Mirror时,纹理会重复,但在UV边界上会反向。每根轴的纹理寻址模式可以不同,所以你可以在u轴上设置wrap同时在v轴上设置clamp。

如果对于多边形来说纹理太大或太小,那么纹理需要被过滤以匹配空间。有两种过滤方式:放大和缩小。放大过滤器将纹理放大,缩小过滤器将纹理缩小。纹理放大通常很简单,会获得一张模糊的图像,而纹理缩小比较复杂,不正确的缩小会导致锯齿。

最常用的缩小方法是为每个纹理创建一个mipmap。mipmap是一张预先缩小的纹理,尺寸通常是原始纹理大小的一半。对这个mipmap再进行mipmap操作,最终创建一个大小为1x1的纹理,这就是纹理的最终mipmap。你可以将mipmap想象成一个链表,从原始纹理开始,然后变得越来越小,直

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值