1.2 KiB
1.2 KiB
RHIShader::Compile
virtual bool Compile(const void* sourceData, size_t sourceSize, const char* entryPoint, const char* target) = 0;
从内存数据编译着色器。
将已加载到内存中的着色器代码编译为 GPU 可执行的着色器程序。适用于从资源包、网络或自定义加载器获取着色器代码的场景。
参数:
sourceData- 指向着色器源代码或字节码的指针sourceSize- 源数据大小(字节数)entryPoint- 着色器入口点函数名称target- 着色器目标配置文件
返回: 编译成功返回 true,失败返回 false
线程安全: ❌(多线程同时编译同一着色器可能导致未定义行为)
复杂度: O(n),其中 n 为着色器代码行数
示例:
std::vector<char> shaderBytes = LoadShaderFromResource("vertex_shader");
if (!shaderBytes.empty()) {
RHIShader* shader = device->CreateShader();
if (shader->Compile(shaderBytes.data(), shaderBytes.size(), "VSMain", "vs_5_0")) {
shader->Bind();
// 使用着色器...
}
shader->Shutdown();
}
相关文档
- RHIShader - 返回类总览
CompileFromFile- 从文件编译着色器