D3D12渲染技术之寻址模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxw167/article/details/82882754

结合常数或线性插值的纹理定义了矢量值函数T(u,v)=(r,g,b,a), 也就是说,给定纹理坐标(u,v)∈[0,1] ,纹理函数T返回颜色(r,g,b,a)。 Direct3D允许我们以四种不同的寻址方式(称为寻址模式):wrap,border color,clamp和mirror。

1、wrap通过在每个整数链接处重复图像来扩展纹理函数(参见下图所示)。
在这里插入图片描述
2、border color通过将不在[0,1] 中的每个(u,v)映射到程序员指定的某种颜色来扩展纹理功能参见下图:
在这里插入图片描述
3、clamp通过将不在[0,1] 中的每个(u,v)映射到颜色T(u0,
v0),其中(u0,v0)是[0,1] 中包含的(u,v)的最近点参见下图所示。
在这里插入图片描述
4、mirror通过在每个整数链接处镜像图像来扩展纹理函数参见下图:
在这里插入图片描述Wrap模式可能是最常用的, 它允许我们在某些表面上重复平铺纹理。 这使我们能够在不提供额外数据的情况下增加纹理分辨率, 通过平铺,可以得到无缝的纹理。 例如,板条箱纹理不是无缝的,因为可以清楚地看到重复, 但是,下图显示了无缝砖纹理重复2×3次。
在这里插入图片描述
因为纹理是无缝的,所以重复模式更难以注意到。
Direct3D通过D3D12_TEXTURE_ADDRESS_MODE枚举类型描述地址模式:

typedef enum D3D12_TEXTURE_ADDRESS_MODE
{
  D3D12_TEXTURE_ADDRESS_MODE_WRAP        = 1,
  D3D12_TEXTURE_ADDRESS_MODE_MIRROR      = 2,
  D3D12_TEXTURE_ADDRESS_MODE_CLAMP       = 3,
  D3D12_TEXTURE_ADDRESS_MODE_BORDER      = 4,
  D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5
} D3D12_TEXTURE_ADDRESS_MODE;

这些寻址模式,在DX9中都有介绍,这里只是给读者介绍一下,详情可以参考DX12文档。

阅读更多

扫码向博主提问

海洋_

博客专家

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 3D引擎架构
  • 服务器架构
  • GPU渲染
  • 客户端架构
  • 引擎优化
去开通我的Chat快问

没有更多推荐了,返回首页