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>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user