c7821c4c99
- cpp/functions/gfx/uniform_parser: regex-based parser of @slider/@color/@toggle/@xy annotations (+ inline tests) - cpp/functions/gfx/uniform_panel: ImGui widgets + value store + glUniform* apply - shader_canvas: optional uniforms callback invoked per-frame - gl_loader: +glUniform1i/3f/4f - seed plasma: demo uniforms u_speed + u_color - rebuild Windows .exe Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
32 lines
982 B
C++
32 lines
982 B
C++
#pragma once
|
|
#include <functional>
|
|
#include <string>
|
|
#include "gfx/gl_framebuffer.h"
|
|
#include "gfx/gl_shader.h"
|
|
#include "gfx/fullscreen_quad.h"
|
|
|
|
namespace fn::gfx {
|
|
|
|
struct ShaderCanvas {
|
|
Framebuffer fb;
|
|
Quad quad;
|
|
unsigned int program = 0;
|
|
bool initialized = false;
|
|
};
|
|
|
|
// Inicializa recursos GL (idempotente).
|
|
void canvas_init(ShaderCanvas& c);
|
|
|
|
// Sustituye el programa activo (borra el anterior). Acepta program=0 para pantalla en negro.
|
|
void canvas_set_program(ShaderCanvas& c, unsigned int program);
|
|
|
|
// Renderiza el shader al FBO y dibuja la textura resultante como contenido del panel ImGui.
|
|
// Llamar DENTRO de un ImGui::Begin/End. Ocupa GetContentRegionAvail().
|
|
// uniforms_fn se invoca tras glUseProgram y antes de quad_draw, recibe el program ID.
|
|
void canvas_render(ShaderCanvas& c, float time_seconds,
|
|
const std::function<void(unsigned int program)>& uniforms_fn = {});
|
|
|
|
void canvas_destroy(ShaderCanvas& c);
|
|
|
|
} // namespace fn::gfx
|