glslc - Missing entry point even with -fentry-point

1.6k views Asked by At

When using glslc --targe-env="vulkan1.1" -fentry-point="mainColor" test.frag, I get the error

test.frag: error: Linking fragment stage: Missing entry point: Each stage requires one entry point 

test.frag content :

#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);
}

What am I doing wrong ?
How to fix this compilation error ?

1

There are 1 answers

3
Rabbid76 On BEST ANSWER

What am I doing wrong?

See Support multiple entry points in a single module #605:

GLSL only allows a single entry point per stage, so either 0 or 1 per compilation unit, and it must be called main(). [...]

and OpenGL Shading Language 4.60 Specification (HTML) - 3.8.2. Dynamically Uniform Expressions and Uniform Control Flow

[...] Uniform control flow is the initial state at the entry into main(), [...]

How to fix this compilation error?

Declare the main() function.