Files
XCEngine/docs/api/rhi/capabilities/capabilities.md
2026-03-20 02:35:45 +08:00

87 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RHICapabilities
**命名空间**: `XCEngine::RHI`
**类型**: `struct`
**头文件**: `XCEngine/RHI/RHICapabilities.h`
**描述**: GPU 设备能力结构体,描述了当前图形设备支持的各种功能和限制。
## 概述
`RHICapabilities` 是一个纯数据结构的 struct用于在运行时查询当前 GPU 设备的能力和限制。开发者可以通过 `RHIDevice::GetCapabilities()` 获取设备能力信息,据此决定是否启用特定图形特性(如光线追踪、网格着色器等),或在进行资源创建时确保不超过设备支持的范围。
## 结构体成员
| 成员 | 类型 | 描述 | 默认值 |
|------|------|------|--------|
| `bSupportsRayTracing` | `bool` | 支持光线追踪 | - |
| `bSupportsMeshShaders` | `bool` | 支持 Mesh 着色器 | - |
| `bSupportsExplicitMultiThreading` | `bool` | 支持显式多线程 | - |
| `bSupportsGeometryShaders` | `bool` | 支持几何着色器 | - |
| `bSupportsTessellation` | `bool` | 支持曲面细分 | - |
| `bSupportsComputeShaders` | `bool` | 支持计算着色器 | - |
| `bSupportsDepthBoundsTest` | `bool` | 支持深度范围测试 | - |
| `bSupportsAlphaToCoverage` | `bool` | 支持 Alpha 到覆盖 | - |
| `bSupportsIndependentBlend` | `bool` | 支持独立混合 | - |
| `bSupportsLogicOps` | `bool` | 支持逻辑操作 | - |
| `bSupportsMultiViewport` | `bool` | 支持多视口 | - |
| `bSupportsConservativeRasterization` | `bool` | 支持保守光栅化 | - |
| `bSupportsProgrammableSamplePositions` | `bool` | 支持可编程采样位置 | - |
### 资源限制
| 成员 | 类型 | 描述 | 默认值 |
|------|------|------|--------|
| `maxTexture2DSize` | `uint32_t` | 最大 2D 纹理尺寸 | - |
| `maxTexture3DSize` | `uint32_t` | 最大 3D 纹理尺寸 | - |
| `maxTextureCubeSize` | `uint32_t` | 最大立方体贴图尺寸 | - |
| `maxRenderTargets` | `uint32_t` | 最大渲染目标数量 | - |
| `maxViewports` | `uint32_t` | 最大视口数量 | - |
| `maxVertexAttribs` | `uint32_t` | 最大顶点属性数量 | - |
| `maxConstantBufferSize` | `uint32_t` | 最大常量缓冲大小 | - |
| `maxAnisotropy` | `uint32_t` | 最大各向异性级别 | - |
| `maxColorAttachments` | `uint32_t` | 最大颜色附件数量 | - |
### 线宽和点大小
| 成员 | 类型 | 描述 | 默认值 |
|------|------|------|--------|
| `minSmoothedLineWidth` | `float` | 最小平滑线宽 | - |
| `maxSmoothedLineWidth` | `float` | 最大平滑线宽 | - |
| `minPointSize` | `float` | 最小点大小 | - |
| `maxPointSize` | `float` | 最大点大小 | - |
| `maxPointSizeAA` | `float` | 抗锯齿最大点大小 | - |
| `maxLineWidth` | `float` | 最大线宽 | - |
| `maxLineWidthAA` | `float` | 抗锯齿最大线宽 | - |
### 版本信息
| 成员 | 类型 | 描述 | 默认值 |
|------|------|------|--------|
| `majorVersion` | `int` | 主版本号 | - |
| `minorVersion` | `int` | 次版本号 | - |
| `shaderModel` | `std::string` | 着色器模型版本 | - |
## 使用示例
```cpp
const RHICapabilities& caps = device->GetCapabilities();
if (caps.bSupportsRayTracing) {
// 启用光线追踪功能
}
if (caps.bSupportsComputeShaders) {
// 启用计算着色器
}
uint32_t textureSize = std::min(requestedSize, caps.maxTexture2DSize);
```
## 相关文档
- [RHI 模块](../rhi.md) - RHI 模块总览
- [RHIDevice](../device/device.md) - 设备对象