fd5787c55f
- .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>
42 lines
1.7 KiB
C++
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
|