Question

Can we have vert shader without attributes?

#version 300 es
out mediump vec4 basecolor;

uniform ivec2 x1;

void main(void)
{
        if(x1 == ivec2(10,20))
                basecolor = vec4(0.0, 1.0, 0.0, 1.0);
        else
              basecolor = vec4(1.0, 0.0, 1.0, 1.0);

        gl_PointSize = 64.0;
        gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
}



#version 300 es
in mediump vec4 basecolor;

out vec4 FragColor;
void main(void)
{
        FragColor =  basecolor;
}
Was it helpful?

Solution

Technically there is nothing in the specification that actually requires you to have vertex attributes. But by the same token, in OpenGL ES 3.0 you have two intrinsically defined in attributes whether you want them or not:

The built-in vertex shader variables for communicating with fixed functionality are intrinsically declared as follows in the vertex language:

in highp int gl_VertexID;
in highp int gl_InstanceID;

This is really the only time it actually makes sense not to have any attributes. You can dynamically compute the position based on gl_VertexID, gl_InstanceID or some combination of both, which is a major change from OpenGL ES 2.0.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top