Files
XCEngine/docs/api/rhi/shader/compile-from-file.md

40 lines
1.3 KiB
Markdown
Raw Normal View History

# RHIShader::CompileFromFile
```cpp
virtual bool CompileFromFile(const wchar_t* filePath, const char* entryPoint, const char* target) = 0;
```
2026-03-20 02:35:45 +08:00
从文件加载并编译着色器。
从指定的文件路径读取着色器代码并编译为 GPU 可执行的着色器程序。该方法支持各种着色器目标平台(如 D3D12 的 `vs_5_0``ps_5_0` 等,或 Vulkan 的 SPIR-V
**参数:**
2026-03-20 02:35:45 +08:00
- `filePath` - 着色器文件路径(宽字符字符串,支持 Unicode 路径)
- `entryPoint` - 着色器入口点函数名称(如 `"VSMain"``"PSMain"`
- `target` - 着色器目标配置文件(如 `"vs_5_0"``"ps_5_0"``"spv"`
**返回:** 编译成功返回 `true`,失败返回 `false`
2026-03-20 02:35:45 +08:00
**线程安全:** ❌(多线程同时编译同一着色器可能导致未定义行为)
2026-03-20 02:35:45 +08:00
**复杂度:** O(n),其中 n 为着色器代码行数
**示例:**
```cpp
2026-03-20 02:35:45 +08:00
RHIShader* vertexShader = device->CreateShader();
if (vertexShader->CompileFromFile(L"shaders/vertex.cso", "VSMain", "vs_5_0")) {
vertexShader->Bind();
// 使用着色器...
} else {
printf("Vertex shader compilation failed!\n");
}
vertexShader->Shutdown();
device->DestroyShader(vertexShader);
```
## 相关文档
2026-03-20 02:35:45 +08:00
- [RHIShader](shader.md) - 返回类总览
- [`Compile`](compile.md) - 从内存数据编译着色器