docs: update RHI API docs

This commit is contained in:
2026-03-20 02:35:45 +08:00
parent ea756c0177
commit 070b444f8f
501 changed files with 13493 additions and 2022 deletions

View File

@@ -0,0 +1,55 @@
# RHISampler::Bind
```cpp
virtual void Bind(unsigned int unit) = 0;
```
将采样器绑定到指定的纹理单元。该方法将采样器状态设置到渲染管线的对应纹理采样槽位,使其后续的纹理采样操作可以使用此采样器。
**参数:**
| 参数 | 类型 | 描述 |
|------|------|------|
| `unit` | `unsigned int` | 纹理单元索引,指定绑定到哪个纹理采样槽位(通常 0-15 |
**返回:**
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHISampler.h"
class MySampler : public XCEngine::RHI::RHISampler {
public:
void Shutdown() override { }
void Bind(unsigned int unit) override {
m_boundUnit = unit;
}
void Unbind(unsigned int unit) override {
if (m_boundUnit == unit) {
m_boundUnit = -1;
}
}
void* GetNativeHandle() override { return nullptr; }
unsigned int GetID() override { return 0; }
private:
int m_boundUnit = -1;
};
void Example() {
MySampler sampler;
sampler.Bind(0);
sampler.Bind(1);
sampler.Bind(2);
}
```
## 相关文档
- [RHISampler 总览](sampler.md) - 返回类总览
- [RHISampler::Unbind](unbind.md) - 解绑采样器

View File

@@ -4,16 +4,42 @@
virtual unsigned int GetID() = 0;
```
获取采样器 ID
获取采样器的唯一标识符。该方法返回分配给采样器的唯一整数 ID可用于采样器的识别、缓存管理或调试目的
**返回** 采样器唯一标识符
**参数**
**返回:** 采样器的唯一无符号整数标识符
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
unsigned int id = sampler->GetID();
#include "XCEngine/RHI/RHISampler.h"
class MySampler : public XCEngine::RHI::RHISampler {
public:
void Shutdown() override { }
void Bind(unsigned int unit) override { }
void Unbind(unsigned int unit) override { }
void* GetNativeHandle() override { return nullptr; }
unsigned int GetID() override { return m_id; }
private:
unsigned int m_id = 1;
};
void Example() {
MySampler sampler1;
MySampler sampler2;
unsigned int id1 = sampler1.GetID();
unsigned int id2 = sampler2.GetID();
}
```
## 相关文档
- [RHISampler 总览](sampler.md) - 返回类总览
- [RHISampler::GetNativeHandle](get-native-handle.md) - 获取原生句柄

View File

@@ -4,12 +4,43 @@
virtual void* GetNativeHandle() = 0;
```
获取原生 API 句柄
获取底层图形 API 的原生句柄。该方法返回采样器在对应图形 API 中的原生对象指针或句柄,可用于调试或高级图形 API 互操作
**返回** 原生采样器句柄
**参数**
**返回:** 指向原生图形 API 采样器对象的 void 指针具体类型取决于底层实现D3D11: `ID3D11SamplerState*`D3D12: `D3D12_GPU_VIRTUAL_ADDRESS``ID3D12Resource*`Vulkan: `VkSampler`
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHISampler.h"
class MySampler : public XCEngine::RHI::RHISampler {
public:
void Shutdown() override { }
void Bind(unsigned int unit) override { }
void Unbind(unsigned int unit) override { }
void* GetNativeHandle() override { return reinterpret_cast<void*>(m_nativeHandle); }
unsigned int GetID() override { return 0; }
private:
uint64_t m_nativeHandle = 0x12345678;
};
void Example() {
MySampler sampler;
void* handle = sampler.GetNativeHandle();
if (handle != nullptr) {
// 使用原生句柄进行调试或高级操作
}
}
```
## 相关文档
- [RHISampler 总览](sampler.md) - 返回类总览
- [RHISampler::GetID](get-id.md) - 获取采样器 ID

View File

@@ -1,41 +0,0 @@
# RHISampler 方法
## Shutdown
```cpp
virtual void Shutdown() = 0;
```
释放采样器资源。
## Bind
```cpp
virtual void Bind(unsigned int unit) = 0;
```
绑定采样器到纹理单元。
## Unbind
```cpp
virtual void Unbind(unsigned int unit) = 0;
```
解绑采样器。
## GetNativeHandle
```cpp
virtual void* GetNativeHandle() = 0;
```
获取原生 API 句柄。
## GetID
```cpp
virtual unsigned int GetID() = 0;
```
获取采样器 ID。

View File

@@ -4,19 +4,53 @@
**类型**: `class` (abstract)
**描述**: GPU 纹理采样器抽象接口,用于配置纹理过滤和寻址模式。
**头文件**: `RHISampler.h`
**描述**: GPU 纹理采样器抽象接口,用于配置纹理过滤和寻址模式。采样器定义了如何对纹理进行采样,包括过滤模式、寻址模式和各向异性级别等参数。
## 概述
`RHISampler` 是 RHI 抽象层中的纹理采样器接口,提供跨平台的纹理采样配置能力。通过 `RHIDevice::CreateSampler` 创建采样器实例。
**关键特性**:
- 支持点采样、线性采样和各向异性采样
- 支持 Wrap、Mirror、Clamp、Border 等寻址模式
- 提供原生 API 句柄访问
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Shutdown`](shutdown.md) | 关闭并释放资源 |
| [`Bind`](../shader/bind.md) | 绑定采样器 |
| [`Unbind`](../shader/unbind.md) | 解绑采样器 |
| [`Bind`](bind.md) | 绑定采样器到纹理单元 |
| [`Unbind`](unbind.md) | 解绑采样器 |
| [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 |
| [`GetID`](get-id.md) | 获取采样器 ID |
## 使用示例
```cpp
// 通过 RHIDevice 创建采样器
SamplerDesc samplerDesc;
samplerDesc.filter = static_cast<uint32_t>(FilterMode::Anisotropic);
samplerDesc.addressU = static_cast<uint32_t>(TextureAddressMode::Wrap);
samplerDesc.addressV = static_cast<uint32_t>(TextureAddressMode::Wrap);
samplerDesc.addressW = static_cast<uint32_t>(TextureAddressMode::Wrap);
samplerDesc.maxAnisotropy = 16;
samplerDesc.minLod = 0;
samplerDesc.maxLod = FLT_MAX;
RHISampler* sampler = device->CreateSampler(samplerDesc);
// 绑定到纹理单元 0
sampler->Bind(0);
// 使用完毕后关闭
sampler->Shutdown();
```
## 相关文档
- [../rhi/rhi.md](../rhi.md) - RHI 模块总览
- [RHI 模块总览](../rhi.md) - RHI 模块总览
- [RHITexture](../texture/texture.md) - 纹理资源
- [RHIDevice::CreateSampler](../device/create-sampler.md) - 创建采样器

View File

@@ -4,10 +4,45 @@
virtual void Shutdown() = 0;
```
释放采样器资源。
关闭并释放采样器资源。该方法用于在采样器不再需要时进行清理工作,释放底层图形 API 分配的资源。
**参数:**
**返回:**
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHISampler.h"
class MySampler : public XCEngine::RHI::RHISampler {
public:
void Shutdown() override {
if (m_initialized) {
ReleaseNativeResource();
m_initialized = false;
}
}
void Bind(unsigned int unit) override { }
void Unbind(unsigned int unit) override { }
void* GetNativeHandle() override { return nullptr; }
unsigned int GetID() override { return 0; }
private:
bool m_initialized = true;
void ReleaseNativeResource() { }
};
void Example() {
MySampler sampler;
sampler.Shutdown();
}
```
## 相关文档
- [RHISampler 总览](sampler.md) - 返回类总览

View File

@@ -0,0 +1,52 @@
# RHISampler::Unbind
```cpp
virtual void Unbind(unsigned int unit) = 0;
```
将采样器从指定的纹理单元解绑。该方法将指定的纹理单元上的采样器状态清除,使其不再占用该采样槽位。
**参数:**
| 参数 | 类型 | 描述 |
|------|------|------|
| `unit` | `unsigned int` | 纹理单元索引,指定从哪个纹理采样槽位解绑 |
**返回:**
**线程安全:**
**复杂度:** O(1)
**示例:**
```cpp
#include "XCEngine/RHI/RHISampler.h"
class MySampler : public XCEngine::RHI::RHISampler {
public:
void Shutdown() override { }
void Bind(unsigned int unit) override { m_boundUnit = unit; }
void Unbind(unsigned int unit) override {
if (m_boundUnit == unit) {
m_boundUnit = -1;
}
}
void* GetNativeHandle() override { return nullptr; }
unsigned int GetID() override { return 0; }
private:
int m_boundUnit = -1;
};
void Example() {
MySampler sampler;
sampler.Bind(0);
sampler.Unbind(0);
}
```
## 相关文档
- [RHISampler 总览](sampler.md) - 返回类总览
- [RHISampler::Bind](bind.md) - 绑定采样器