From 8c647d3700fe3196d0fd511e80bc3c60b0b8f1ae Mon Sep 17 00:00:00 2001 From: irrlicht Date: Sun, 5 Jul 2026 15:12:23 +0200 Subject: [PATCH] CHANGELOG fuer truecolor16, starter-Example auf 620x480 Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 47 +++++++++++++++++++++++++++++++++++++++++++++ examples/starter.rs | 6 +++--- 2 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..3e4814a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,47 @@ +# 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. diff --git a/examples/starter.rs b/examples/starter.rs index b89cb1c..0f5a986 100644 --- a/examples/starter.rs +++ b/examples/starter.rs @@ -12,9 +12,9 @@ use pbio::{rgb565, Event, Key, MouseButton, Platform, PlatformConfig}; fn main() { let mut p = Platform::new(PlatformConfig { title: "pbio starter".into(), - window_size: (960, 720), - framebuffer_size: (320, 240), - aspect_ratio: Some(4.0/3.0), + window_size: (1240, 960), + framebuffer_size: (620, 480), + aspect_ratio: Some(620.0/480.0), ..Default::default() });