# RHIShader::Compile ```cpp 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 为着色器代码行数 **示例:** ```cpp std::vector 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](shader.md) - 返回类总览 - [`CompileFromFile`](compile-from-file.md) - 从文件编译着色器