Constant VERT

Source
pub const VERT: &str = r#"#version 330 core
out vec2 v_uv;
void main() {
    vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));
    v_uv = p;
    // uv.y = 0 lands on GL row 0, so a top-down upload stays top-down in the FBO, in glReadPixels
    // output and in egui — no flip anywhere.
    gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);
}
"#;
Expand description

Full-screen triangle; no vertex buffer needed (gl_VertexID based).