Files
XCEngine/docs/api/rhi/rhi-device.md

2.8 KiB
Raw Blame History

RHIDevice

命名空间: XCEngine::RHI

类型: class (abstract)

描述: RHI 渲染设备抽象接口,代表一个图形设备实例。

概述

RHIDevice 是 RHI 模块的核心接口之一,负责创建和管理所有 GPU 资源。每个 RHI 后端D3D12、OpenGL 等)都需要实现此接口。

公共方法

生命周期

方法 描述
virtual bool Initialize(const RHIDeviceDesc& desc) 初始化设备
virtual void Shutdown() 关闭设备,释放所有资源

资源创建

方法 描述
virtual RHIBuffer* CreateBuffer(const BufferDesc& desc) 创建 GPU 缓冲区
virtual RHITexture* CreateTexture(const TextureDesc& desc) 创建 GPU 纹理
virtual RHISwapChain* CreateSwapChain(const SwapChainDesc& desc) 创建交换链
virtual RHICommandList* CreateCommandList(const CommandListDesc& desc) 创建命令列表
virtual RHICommandQueue* CreateCommandQueue(const CommandQueueDesc& desc) 创建命令队列
virtual RHIShader* CompileShader(const ShaderCompileDesc& desc) 编译着色器
virtual RHIPipelineState* CreatePipelineState(const PipelineStateDesc& desc) 创建管线状态对象
virtual RHIFence* CreateFence(const FenceDesc& desc) 创建同步栅栏
virtual RHISampler* CreateSampler(const SamplerDesc& desc) 创建采样器

设备信息

方法 描述
virtual const RHICapabilities& GetCapabilities() const 获取设备能力
virtual const RHIDeviceInfo& GetDeviceInfo() const 获取设备信息
virtual void* GetNativeDevice() = 0 获取原生设备指针

使用示例

// 创建 D3D12 设备
RHI::RHIDevice* device = RHI::RHIFactory::CreateRHIDevice(RHI::RHIType::D3D12);

// 配置设备描述
RHI::RHIDeviceDesc desc;
desc.windowHandle = hwnd;
desc.width = 1280;
desc.height = 720;
desc.appName = L"MyApp";
desc.enableDebugLayer = true;

// 初始化设备
if (device->Initialize(desc)) {
    // 获取设备能力
    const RHI::RHICapabilities& caps = device->GetCapabilities();
    if (caps.bSupportsRayTracing) {
        // 设备支持光线追踪
    }
    
    // 获取设备信息
    const RHI::RHIDeviceInfo& info = device->GetDeviceInfo();
    printf("GPU: %ls\n", info.description.c_str());
    
    // 创建资源
    RHI::BufferDesc bufferDesc;
    bufferDesc.size = 1024;
    bufferDesc.bufferType = (uint32_t)RHI::BufferType::Vertex;
    RHI::RHIBuffer* buffer = device->CreateBuffer(bufferDesc);
    
    // ... 使用设备 ...
    
    // 关闭设备
    device->Shutdown();
}

delete device;

相关文档