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

36 lines
1005 B
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.
# RHIShader::GetNativeHandle
```cpp
virtual void* GetNativeHandle() = 0;
```
获取原生图形 API 句柄。
返回底层图形 API如 D3D12、Vulkan的原生着色器对象指针。用于需要直接访问底层 API 的高级场景,或与外部库互操作。
**返回:** 指向原生着色器对象的指针,类型取决于具体实现(如 D3D12: `ID3DBlob*`Vulkan: `VkShaderModule`
**线程安全:** ❌(访问底层资源,非线程安全)
**复杂度:** O(1)
**示例:**
```cpp
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
```
## 相关文档
- [RHIShader](shader.md) - 返回类总览