# sokol vendoring - **Source**: https://github.com/floooh/sokol - **Commit pinned**: `5cc3e913258fb63d87c7728569f14005f638e315` (ver `cpp/vendor/sokol/.commit-sha`) - **License**: Zlib (`cpp/vendor/sokol/LICENSE`) - **Headers vendoreados** (single-header): - `sokol_gfx.h` — graphics abstraction (GL/GLES/WebGL2/Metal/D3D11) - `sokol_log.h` — logger callback - `sokol_glue.h` — helpers para integracion contexto - `sokol_app.h` — windowing/input. **NO se usa**: usamos SDL3 para windowing. Vendoreado por si una app standalone lo quiere. - **Vendoring command**: ``` mkdir -p cpp/vendor/sokol && cd cpp/vendor/sokol && \ SHA=$(curl -s https://api.github.com/repos/floooh/sokol/commits/master | \ grep -m1 '"sha"' | cut -d'"' -f4) && \ for f in sokol_gfx.h sokol_log.h sokol_glue.h sokol_app.h LICENSE; do curl -fsSL "https://raw.githubusercontent.com/floooh/sokol/$SHA/$f" -o "$f" done && echo "$SHA" > .commit-sha ``` ## Por qué sokol_gfx - Single-header, ~1.2 MB texto, ~50 KB compilado strippable. - Backends: GL 3.3, GLES3, WebGL2, Metal, D3D11. **Cubre las 4 plataformas + web** del stack gamedev (issue 0072). - Sin dependencias externas. - Determinista, sin estado global oculto. - Encaja con cultura "single-file function" del registry. ## Compile-time backend selection El backend se elige con macros: | Macro | Backend | |---|---| | `SOKOL_GLCORE` | OpenGL 3.3 desktop | | `SOKOL_GLES3` | OpenGL ES 3.0 (Android, iOS sin Metal) | | `SOKOL_METAL` | Metal (iOS/macOS) | | `SOKOL_D3D11` | D3D11 (Windows) | | `SOKOL_WGPU` | WebGPU (alpha, no usar aun) | Para WASM con `-sUSE_WEBGL2=1`: definir `SOKOL_GLES3`. ## Sokol_app NO se usa Mantenemos `sokol_app.h` vendoreado por completitud pero el stack usa **SDL3** para windowing/input. Sokol_app duplicaria la responsabilidad y limita acceso a APIs SDL (audio, gamepad, WalletConnect deep links). ## Upgrade ``` cd cpp/vendor/sokol SHA=$(curl -s https://api.github.com/repos/floooh/sokol/commits/master | grep -m1 '"sha"' | cut -d'"' -f4) # Repetir el for loop del vendoring command echo "$SHA" > .commit-sha ```