2017-10-20 1 views
1

Ich weiß, wenn Shader-Modul in Vulkan erstellen können Sie den Einstiegspunkt in VkPipelineShaderStageCreateInfo mit pName angeben.Mit verschiedenen Eingangspunkt neben Haupt in Vulkan

Ich konnte jedoch nicht einen anderen Einstiegspunkt als "Haupt" in meiner GLSL/SPV-Datei verwenden.

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

Hat jemals jemand diese Funktion verwendet und kann mir ein Beispiel geben? Danke

Antwort

2

Ich habe es ein wenig zurück versucht und ich glaube, das ist derzeit nicht möglich mit der offiziellen glslc oder glslangValidator.

Hinweis GLSL schreibt eine main-Funktion vor, so dass die Autoren es wahrscheinlich als unbrauchbar empfanden.

glslc Outright sagt, dass relevante Parameter nur für HLSL funktioniert.

glslangValidator ist weniger klar, aber relevante Parameter werden (in der Zeit des Schreibens) ignoriert, wenn GLSL verwendet wird.

UPDATE: Es gibt eine relevant GitHub Issue. Und diese Funktion wurde unterstützt. Sie müssen also entweder auf die nächste SDK-Version warten oder den Compiler von master erstellen.

Prüfung der Tat diese Version funktioniert mit:

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

Der Compiler einen Fehler meldet, wenn nicht main Funktion in GLSL verwendet wird, aber es scheint irgendwie zu funktionieren:

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