2017-10-20 200 views
1

我知道在Vulkan中创建着色器模块时,您可以使用pName指定VkPipelineShaderStageCreateInfo中的入口点。在vulkan中main中使用不同的入口点

但是,我还没有能够在我的glsl/spv文件中使用另一个入口点,但'main'。

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

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

回答

2

我正在尝试一些方式,我相信这是目前不可能使用官方glslcglslangValidator

注意GLSL强制要求main函数,所以自动装置可能认为它是无用的。

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

glslangValidator不太清楚,但是在使用GLSL时忽略相关参数(写入时)。

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

事实上测试该版本它与:

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

如果非main功能在GLSL使用的编译器记录一个错误,但它似乎反正工作:

glslangValidator.exe -V -H -e mymain --source-entrypoint sourcemain -o hello.spv hello.vert 
相关问题