代码之家  ›  专栏  ›  技术社区  ›  Clmelissa

在vulkan中使用main旁边的不同入口点

  •  2
  • Clmelissa  · 技术社区  · 7 年前

    我知道在Vulkan中创建着色器模块时,可以在 VkPipelineShaderStageCreateInfo 使用 pName

    然而,我无法在glsl/spv文件中使用另一个入口点,而是“main”。

    typedef struct VkPipelineShaderStageCreateInfo {
      VkStructureType                     sType;
      const void*                         pNext;
      VkPipelineShaderStageCreateFlags    flags;
      VkShaderStageFlagBits               stage;
      VkShaderModule                      module;
      const char*                         pName;
      const VkSpecializationInfo*         pSpecializationInfo;
    } VkPipelineShaderStageCreateInfo;
    

    有没有人使用过这个功能,可以给我举个例子?非常感谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   krOoze    7 年前

    我曾经试过,我相信这是不可能的 glslc glslangValidator .

    注GLSL授权a main 函数,所以autors可能发现它没有用。

    glslc 直接说,相关参数仅适用于HLSL。

    GLS额定值 不太清楚,但在使用GLSL时(在编写时)忽略了相关参数。

    更新: 有一个 relevant GitHub Issue master .

    事实上,测试它使用的版本:

    glslangValidator.exe -V -H -e mymain --source-entrypoint main -o hello.spv hello.vert
    

    如果不是,编译器会记录错误- GLSL中使用了函数,但它似乎无论如何都能工作:

    glslangValidator.exe -V -H -e mymain --source-entrypoint sourcemain -o hello.spv hello.vert