Files
XCEngine/docs/api/rhi/shader/get-native-handle.md
2026-03-20 02:35:45 +08:00

1005 B
Raw Blame History

RHIShader::GetNativeHandle

virtual void* GetNativeHandle() = 0;

获取原生图形 API 句柄。

返回底层图形 API如 D3D12、Vulkan的原生着色器对象指针。用于需要直接访问底层 API 的高级场景,或与外部库互操作。

返回: 指向原生着色器对象的指针,类型取决于具体实现(如 D3D12: ID3DBlob*Vulkan: VkShaderModule

线程安全: (访问底层资源,非线程安全)

复杂度: O(1)

示例:

RHIShader* shader = device->CreateShader();
shader->CompileFromFile(L"shaders/compute.cso", "CSMain", "cs_5_0");

void* nativeHandle = shader->GetNativeHandle();
#ifdef XCENGINE_D3D12
    ID3DBlob* d3dBlob = static_cast<ID3DBlob*>(nativeHandle);
    // 使用 D3D12 API...
#elif defined(XCENGINE_VULKAN)
    VkShaderModule vkModule = reinterpret_cast<VkShaderModule>(nativeHandle);
    // 使用 Vulkan API...
#endif

相关文档