feat(shaders_lab): scaffold C++ app with GLSL live-reload canvas

- cpp/functions/gfx: gl_shader, gl_framebuffer, fullscreen_quad, shader_canvas
- cpp/apps/shaders_lab: main + 3 seed shaders (plasma, circle, checker)
- ImGui docking layout: Code | Canvas | Controls

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-24 20:32:14 +02:00
parent 5546ce6453
commit 042bb43b37
16 changed files with 823 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
#pragma once
#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().
void canvas_render(ShaderCanvas& c, float time_seconds);
void canvas_destroy(ShaderCanvas& c);
} // namespace fn::gfx