Files
egutierrez fd5787c55f chore: auto-commit (43 archivos)
- .mcp.json
- bash/functions/infra/write_mcp_jupyter_config.md
- bash/functions/infra/write_mcp_jupyter_config.sh
- cpp/CMakeLists.txt
- cpp/apps/chart_demo
- cpp/apps/shaders_lab
- cpp/functions/gfx/gl_framebuffer.cpp
- cpp/functions/gfx/gl_framebuffer.h
- cpp/functions/gfx/gl_framebuffer.md
- cpp/functions/gfx/mesh_gpu.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-30 17:28:47 +02:00

42 lines
1.7 KiB
C++

#pragma once
#include "gfx/mesh_obj_load.h" // fn::gfx::Mesh
#include <cstddef>
namespace fn::gfx {
// Carga el primer mesh (primera primitive del primer mesh) de un archivo GLB 2.0.
//
// Soporta:
// - POSITION (vec3 float, obligatorio)
// - NORMAL (vec3 float, opcional — si falta se generan normales smooth
// area-weighted promediando las normales de cara de cada vertice)
// - indices (ubyte/ushort/uint, escalares) — sin indices se interpreta como
// lista de triangulos directa.
//
// Node transform: si el primer nodo que referencia el mesh tiene matrix o TRS,
// se aplica a posiciones y normales (normales se transforman con la inversa transpuesta).
//
// Limitaciones (documentadas):
// - Solo GLB (binario). .gltf+.bin separado y data-URIs base64 no soportados.
// - Solo el primer mesh / primera primitive.
// - Sin texturas ni materiales (mesh viewer usa color uniforme).
// - Asume buffer 0 embebido en el chunk BIN.
//
// Retorna Mesh vacio (positions.empty()) si el parse falla.
// El detalle del error esta disponible via gltf_load_last_error().
Mesh gltf_load_mesh_from_file(const char* path);
// Variante pura (salvo el buffer): parsea GLB desde un bloque de memoria.
// 'data' debe vivir al menos mientras dure la llamada.
// Retorna Mesh vacio en fallo; gltf_load_last_error() da el detalle.
Mesh gltf_load_mesh_from_memory(const unsigned char* data, size_t size);
// Descripcion del ultimo error de gltf_load_mesh_from_file /
// gltf_load_mesh_from_memory. Valida hasta la siguiente llamada a cualquiera
// de las dos funciones. Nunca retorna nullptr (puede ser "").
const char* gltf_load_last_error();
} // namespace fn::gfx