glslc-缺少入口点,即使有-fentry点

glslc-缺少入口点,即使有-fentry点,glsl,vulkan,spir-v,Glsl,Vulkan,Spir V,使用glslc--target env=“vulkan1.1”-fentry point=“mainColor”test.frag时,会出现错误 test.frag内容: #version 450 layout (location=0) in vec4 color; layout (location=0) out vec4 fragColor; void mainColor() { fragColor = color; } void mainWhite() { fragCo

使用
glslc--target env=“vulkan1.1”-fentry point=“mainColor”test.frag
时,会出现错误

test.frag内容:

#version 450

layout (location=0) in vec4 color;
layout (location=0) out vec4 fragColor;

void mainColor()
{
    fragColor = color;
}

void mainWhite()
{
    fragColor = vec4(1, 1, 1, 1);
}
我做错了什么?
如何修复此编译错误?

我做错了什么

见:

GLSL只允许每个阶段使用一个入口点,因此每个编译单元可以使用0或1,并且必须调用
main()
。[……]

[…]统一控制流是进入
main()
,[…]时的初始状态

如何修复此编译错误


声明
main()
函数。

主函数正在更改,我想在一个二进制文件中使用mainColor作为main进行编译,然后在另一个二进制文件中使用mainWhite进行编译。这是-fentry point所期望的,不是吗?@Calvin Ruiz是的,我知道,这在Vulkan和SPIR-V中是可能的,但在GLSL中是不可能的:“GLSL只允许每个阶段有一个入口点,[…]”@Calvin Ruiz这在最新的GLSL版本(4.60)中是不可能的,但在将来可能实现。
#version 450

layout (location=0) in vec4 color;
layout (location=0) out vec4 fragColor;

void mainColor()
{
    fragColor = color;
}

void mainWhite()
{
    fragColor = vec4(1, 1, 1, 1);
}