#pragma once #include namespace fn::gfx { struct CompileResult { unsigned int program = 0; // GL program id, 0 si falla bool ok = false; int err_line = -1; // línea parseada del infoLog, -1 si no std::string err_msg; }; // Compila un fragment shader GLSL (sólo el cuerpo del usuario). // Prepends automáticamente: version, out vec4 fragColor, y uniforms u_resolution/u_time/u_mouse. // Usa un vertex shader fijo que genera un fullscreen quad via gl_VertexID. // Si falla, program = 0. Si ok, program es una id válida de glProgram lista para usar. CompileResult compile_fragment(const std::string& user_fragment_src); // Libera el programa. Seguro con id = 0. void delete_program(unsigned int program); } // namespace fn::gfx