# RHISampler **命名空间**: `XCEngine::RHI` **类型**: `class` (abstract) **描述**: GPU 纹理采样器抽象接口,用于配置纹理过滤和寻址模式。 ## 概述 `RHISampler` 封装了纹理采样器的配置,包括过滤模式、寻址模式、各向异性、mipmap 等设置。 ## 公共方法 ### 生命周期 | 方法 | 描述 | |------|------| | `virtual void Shutdown()` | 释放采样器资源 | ### 绑定/解绑 | 方法 | 描述 | |------|------| | `virtual void Bind(unsigned int unit)` | 绑定采样器到纹理单元 | | `virtual void Unbind(unsigned int unit)` | 解绑采样器 | ### 属性访问 | 方法 | 描述 | |------|------| | `virtual void* GetNativeHandle()` | 获取原生 API 句柄 | | `virtual unsigned int GetID()` | 获取采样器 ID | ## 采样器描述 (SamplerDesc) | 成员 | 类型 | 描述 | |------|------|------| | `filter` | `uint32_t` | 过滤模式 | | `addressU` | `uint32_t` | U 轴寻址模式 | | `addressV` | `uint32_t` | V 轴寻址模式 | | `addressW` | `uint32_t` | W 轴寻址模式 | | `mipLodBias` | `float` | Mipmap 级别偏移 | | `maxAnisotropy` | `uint32_t` | 最大各向异性级别 | | `comparisonFunc` | `uint32_t` | 比较函数 | | `borderColorR` | `float` | 边框颜色 R | | `borderColorG` | `float` | 边框颜色 G | | `borderColorB` | `float` | 边框颜色 B | | `borderColorA` | `float` | 边框颜色 A | | `minLod` | `float` | 最小 Mipmap 级别 | | `maxLod` | `float` | 最大 Mipmap 级别 | ## 过滤模式 (FilterMode) | 枚举值 | 描述 | |--------|------| | `Point` | 点采样 | | `Linear` | 双线性插值 | | `Anisotropic` | 各向异性过滤 | | `ComparisonPoint` | 带比较的点采样 | | `ComparisonLinear` | 带比较的双线性插值 | | `ComparisonAnisotropic` | 带比较的各向异性 | ## 寻址模式 (TextureAddressMode) | 枚举值 | 描述 | |--------|------| | `Wrap` | 重复寻址 | | `Mirror` | 镜像寻址 | | `Clamp` | 钳制寻址 | | `Border` | 边框颜色寻址 | | `MirrorOnce` | 单次镜像 | ## 使用示例 ```cpp // 创建采样器 SamplerDesc samplerDesc; samplerDesc.filter = (uint32_t)FilterMode::Anisotropic; samplerDesc.addressU = (uint32_t)TextureAddressMode::Wrap; samplerDesc.addressV = (uint32_t)TextureAddressMode::Wrap; samplerDesc.addressW = (uint32_t)TextureAddressMode::Wrap; samplerDesc.maxAnisotropy = 16; samplerDesc.minLod = 0; samplerDesc.maxLod = FLT_MAX; samplerDesc.mipLodBias = 0; samplerDesc.comparisonFunc = (uint32_t)ComparisonFunc::Never; RHISampler* sampler = device->CreateSampler(samplerDesc); // 绑定到纹理单元 0 sampler->Bind(0); // 解绑 sampler->Unbind(0); ``` ## 相关文档 - [RHITexture](./rhi-texture.md) - 纹理资源 - [RHIDevice](./rhi-device.md) - 创建设备