docs: update RHI API docs
This commit is contained in:
55
docs/api/rhi/sampler/bind.md
Normal file
55
docs/api/rhi/sampler/bind.md
Normal 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) - 解绑采样器
|
||||
@@ -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) - 获取原生句柄
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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。
|
||||
@@ -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) - 创建采样器
|
||||
|
||||
@@ -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) - 返回类总览
|
||||
|
||||
52
docs/api/rhi/sampler/unbind.md
Normal file
52
docs/api/rhi/sampler/unbind.md
Normal 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) - 绑定采样器
|
||||
Reference in New Issue
Block a user