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).