2017-10-20 219 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 
相關問題