Files
XCEngine/docs/api/rhi/shader/get-native-handle.md

36 lines
1005 B
Markdown
Raw Normal View History

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