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

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();
}

相关文档