Files
pbio/CHANGELOG.md
T
2026-07-05 15:12:23 +02:00

1.8 KiB

Changelog

Branch truecolor16 — 16-Bit-Truecolor (RGB565)

Abzweig von master (nach 2d81471 poll_event). Ersetzt den 8-Bit-Paletten-Renderer durch direktes RGB565-Truecolor. Beide Varianten bleiben unabhängig nutzbar: master = 8 Bit indiziert, truecolor16 = 16 Bit direkt.

Geändert

  • Framebuffer: framebuffer_mut() liefert &mut [u16] statt &mut [u8]. Jeder Wert ist ein RGB565-Pixel (Bits RRRRRGGGGGGBBBBB), keine Palettenindizes mehr.
  • GPU-Pfad: Die Pixel-Textur ist jetzt R16Uint (vorher R8Uint); der Fragment-Shader dekodiert die 5/6/5-Bitfelder direkt, statt in einer Paletten-Textur nachzuschlagen. Upload pro Frame: w * h * 2 Byte.
  • Example starter.rs: schreibt RGB565-Werte via rgb565().

Neu

  • pbio::rgb565(r: u8, g: u8, b: u8) -> u16 (const fn) — packt 8-Bit-Kanäle in einen RGB565-Pixelwert.

Entfernt

  • PlatformConfig::palette sowie palette() / palette_mut() und das Dirty-Flag-Handling in present().
  • Modul pbio::palette inkl. Preset RGB332.
  • Paletten-Textur und deren Shader-Binding (@binding(2)).
  • generate_gimp_palette.py (Paletten-Tooling, nur auf master relevant).

Migration von master

8 Bit (master) 16 Bit (truecolor16)
fb[i] = index fb[i] = rgb565(r, g, b)
p.palette_mut()[i] = [r, g, b] entfällt — Farbe direkt ins Pixel schreiben
PlatformConfig { palette: …, .. } Feld entfernt

Paletten-Effekte (Color-Cycling, Fades über palette_mut()) gibt es hier nicht — die entsprechenden Farbwerte müssen pro Frame in den Framebuffer geschrieben werden.

Unverändert

Events (poll_event/drain_events), Letterbox/aspect_ratio, Cursor-Modi (set_mouse_visible/set_mouse_capture), mouse_delta(), VSync-Handling, Fenster-/Surface-Verwaltung.