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

Glsl 在vulkan中使用main旁边的不同入口点,glsl,vulkan,Glsl,Vulkan,我知道在Vulkan中创建着色器模块时,可以使用pName在VkPipelineShaderStageCreateInfo>中指定入口点 但是,我无法在glsl/spv文件中使用除“main”之外的另一个入口点 typedef struct VkPipelineShaderStageCreateInfo { VkStructureType sType; const void* pNext; VkP

我知道在Vulkan中创建着色器模块时,可以使用
pName
VkPipelineShaderStageCreateInfo>中指定入口点

但是,我无法在glsl/spv文件中使用除“main”之外的另一个入口点

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

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

我以前一直在尝试,我相信目前使用官方的
glslc
glslagvalidator
是不可能的

注:GLSL强制要求使用
main
函数,因此autors可能会发现它没有用

glslc
明确表示相关参数仅适用于HLSL

glslagvalidator
不太清楚,但在使用GLSL时(在编写本文时)会忽略相关参数

更新: 有一个问题。这项功能得到了支持。因此,您必须等待下一个SDK版本,或者从
master
构建编译器

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

glslangValidator.exe -V -H -e mymain --source-entrypoint main -o hello.spv hello.vert
如果GLSL中使用了非
main函数,则编译器会记录一个错误,但它似乎仍能正常工作:

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