35 lines
1020 B
C++
35 lines
1020 B
C++
#pragma once
|
|
// Capture mode: renderiza cada demo de la gallery en una ventana GLFW
|
|
// invisible y guarda un PNG en `output_dir/<demo_id>.png` via stb_image_write.
|
|
//
|
|
// Diseñado para CI / golden-image diffing: ver `cpp/scripts/update_goldens.sh`
|
|
// y `cpp/tests/test_visual.cpp`.
|
|
//
|
|
// Importante:
|
|
// - Requiere un contexto OpenGL real. En entornos sin GPU (containers minimos)
|
|
// funciona con `LIBGL_ALWAYS_SOFTWARE=1` (Mesa/llvmpipe) o swiftshader.
|
|
// - Si el entorno (WSL sin GL) no puede crear un contexto GL valido, el
|
|
// binario sale con codigo != 0 sin generar PNGs.
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace gallery {
|
|
|
|
struct CaptureItem {
|
|
std::string id;
|
|
void (*fn)();
|
|
};
|
|
|
|
struct CaptureConfig {
|
|
std::string output_dir;
|
|
int warmup_frames = 3;
|
|
int capture_w = 800;
|
|
int capture_h = 600;
|
|
};
|
|
|
|
// Devuelve true si todo el set se capturo OK.
|
|
bool run_capture(const CaptureConfig& cfg, const std::vector<CaptureItem>& items);
|
|
|
|
} // namespace gallery
|