我知道在Vulkan中创建着色器模块时,您可以使用VkPipelineShaderStageCreateInfo
在pName
中指定入口点。
然而,我还没有能够使用另一个切入点,但主要的'在我的glsl / spv文件中。
typedef struct VkPipelineShaderStageCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineShaderStageCreateFlags flags;
VkShaderStageFlagBits stage;
VkShaderModule module;
const char* pName;
const VkSpecializationInfo* pSpecializationInfo;
} VkPipelineShaderStageCreateInfo;
有没有人使用过这个功能,可以举个例子吗?谢谢
答案 0 :(得分:2)
我正在尝试某种方式,我认为目前无法使用官方glslc
或glslangValidator
。
注意GLSL要求main
函数,因此autors可能发现它没用。
glslc
直接说相关参数仅适用于HLSL。
glslangValidator
不太清楚,但在使用GLSL时,相关参数(在编写时)被忽略。
更新:
有一个relevant GitHub Issue。并且支持此功能。因此,您必须等待下一个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