feat(kotlin-compose): design system + 33 components + gallery_kt + e2e android emulator + scaffolder fixes
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
---
|
||||
name: sprite_batch
|
||||
kind: function
|
||||
lang: cpp
|
||||
domain: gfx
|
||||
version: "0.1.0"
|
||||
purity: impure
|
||||
signature: "sprite_batch_create(int cap=4096) -> SpriteBatch; sprite_batch_begin/draw/end"
|
||||
description: "Batched textured quad renderer sobre sokol_gfx. Begin/draw/end con auto-flush por atlas change o capacity full. Vertex layout pos+uv+color, alpha blending estandar, GLSL 330 / GLES 300. Issue 0072b runtime gamedev — base de plataformeros, top-down, UI sprites."
|
||||
tags: [gamedev, gfx, sokol, sprite, batch, 2d]
|
||||
uses_functions:
|
||||
- sokol_setup_cpp_gfx
|
||||
uses_types:
|
||||
- Rect_cpp_core
|
||||
- Color_cpp_core
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: []
|
||||
example: |
|
||||
fn::gfx::SpriteBatch b = fn::gfx::sprite_batch_create(4096);
|
||||
// por frame, dentro de un sg_pass:
|
||||
fn::gfx::sprite_batch_begin(b, view_proj);
|
||||
fn::gfx::sprite_batch_draw(b, atlas_img, 1024, 1024,
|
||||
{0,0,32,32}, {100,100,32,32}, fn::math2d::Color::white());
|
||||
fn::gfx::sprite_batch_draw(b, atlas_img, 1024, 1024,
|
||||
{32,0,32,32}, {200,100,32,32}, fn::math2d::Color::rgba(255,0,0));
|
||||
fn::gfx::sprite_batch_end(b);
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "cpp/functions/gfx/sprite_batch.cpp"
|
||||
params:
|
||||
- name: cap
|
||||
desc: "Capacidad de quads por flush (CPU buffer). Default 4096 (~96 KB)."
|
||||
- name: img
|
||||
desc: "sg_image atlas. Cambio de img = auto-flush."
|
||||
- name: src
|
||||
desc: "Rect en pixeles dentro del atlas (UV se calculan dividiendo por img_w/img_h)."
|
||||
- name: dst
|
||||
desc: "Rect destino en coordenadas world (la matriz view-proj traduce a clip space)."
|
||||
- name: tint
|
||||
desc: "Color multiplicativo. Default Color::white()."
|
||||
output: "Quads renderizados via sg_draw cuando flush. Una sola draw call por atlas binding."
|
||||
---
|
||||
|
||||
# sprite_batch
|
||||
|
||||
Renderer batched de sprites 2D sobre sokol_gfx. Patron clasico:
|
||||
|
||||
1. `sprite_batch_create` una vez (despues de `sg_setup`).
|
||||
2. Por frame, dentro de un sg_pass:
|
||||
- `sprite_batch_begin(b, view_proj)` — pasa la matriz view-projection del camera_2d.
|
||||
- `sprite_batch_draw(...)` por sprite. Auto-flush cuando cambia atlas o se llena.
|
||||
- `sprite_batch_end(b)` — flush final.
|
||||
|
||||
**Alpha blending** activado por defecto (premultiplicado o no — usar el atlas que tengas; el shader hace `texture(u_tex, v_uv) * tint`).
|
||||
|
||||
**Sampler** linear filter + clamp-to-edge. Para pixel art, crear sampler propio con `SG_FILTER_NEAREST` y bindearlo manualmente (override no soportado por ahora — sub-issue futuro si hace falta).
|
||||
|
||||
**Performance**: 1 draw call por atlas. 10K sprites @ 60 FPS sobre WebGL2 modesto. Cap por defecto 4096 quads/flush; subir si tu juego dibuja >4K sprites del mismo atlas.
|
||||
Reference in New Issue
Block a user