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

@@ -1,31 +1,59 @@
# RHIFactory::CreateRHIDevice (string)
# RHIFactory::CreateRHIDevice
```cpp
static RHIDevice* CreateRHIDevice(const std::string& typeName);
```
根据字符串名称创建 RHI 设备。
根据指定的 RHI 类型名称创建一个新的 RHI 设备实例
**参数:**
- `typeName` - 后端类型名称字符串(不区分大小写)
- `typeName` - RHI 类型的字符串名称,支持的值包括:
- `"D3D12"` - DirectX 12
- `"OpenGL"` - OpenGL
- `"Vulkan"` - Vulkan
- `"Metal"` - Metal
**返回:** 新创建的设备指针,失败返回 `nullptr`
**返回:** 新创建的 RHIDevice 指针,如果创建失败返回 nullptr
**复杂度** O(1)
**异常**
**支持的类型名称:**
- `"D3D12"` / `"d3d12"`
- `"OpenGL"` / `"opengl"` / `"GL"`
- Vulkan 和 Metal 暂不支持
**线程安全:** ❌ 该方法本身是线程安全的,但返回的 RHIDevice 实例通常不是线程安全的。
**复杂度:** O(n),其中 n 为 typeName 字符串长度
**示例:**
```cpp
// 从配置文件读取后端类型
std::string backendType = "D3D12";
RHIDevice* device = RHIFactory::CreateRHIDevice(backendType);
#include "XCEngine/RHI/RHIFactory.h"
#include "XCEngine/RHI/RHIDevice.h"
#include <iostream>
using namespace XCEngine::RHI;
int main() {
RHIDevice* device = RHIFactory::CreateRHIDevice("Vulkan");
if (!device) {
std::cerr << "Failed to create Vulkan device" << std::endl;
return 1;
}
RHIDeviceDesc desc;
if (!device->Initialize(desc)) {
std::cerr << "Failed to initialize device" << std::endl;
delete device;
return 1;
}
const RHIDeviceInfo& info = device->GetDeviceInfo();
std::cout << "Device created: " << info.deviceName << std::endl;
device->Shutdown();
delete device;
return 0;
}
```
## 相关文档
- [RHIFactory 总览](factory.md) - 返回类总览
- [RHIFactory](factory.md) - 返回类总览
- [`CreateRHIDevice(RHIType)`](create-rhi-device-type.md) - 根据枚举类型创建设备