# 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.