feat(core): Étape 11 — resize (surface + depth, Phase 4.4)

This commit is contained in:
Jérôme Bousquié
2026-09-18 17:29:45 +02:00
parent f4df63a136
commit b0aafefed9
4 changed files with 73 additions and 6 deletions
+7
View File
@@ -3,6 +3,13 @@
> 📅 **2026-09-18** — Plan de l'étape suivante.
> **Source de vérité** = code + README.md. Ce document est vidé à la complétion de l'étape.
> **Références** : ROADMAP Phase 4.4 · PLAN Phase 4 · décision D3 (2026-09-18).
>
> ✅ **FAIT (2026-09-18).** `App::resize(w,h)` (`lib/src/app.rs`) reconfigure la surface via
> `Context::configure` et recrée la depth texture via `Renderer::resize_depth` (+ `set_format`),
> avec re-synchronisation de la Scene si le format change (D4). `AppRunner::window_event`
> branche `WindowEvent::Resized` (garde 0×0, D3) et `RedrawRequested` (garde taille nulle, D6).
> `cargo build --workspace`, `cargo test --workspace` et la compilation des exemples passent.
> La vérification visuelle (redimensionner `cube`) reste à faire au runtime.
---
+8 -6
View File
@@ -148,15 +148,17 @@ generated: { by: human:jerome, at: 2026-07-31T00:00:00Z }
- [ ] HDR + Tone Mapping (optionnel)
### 4.4 Gestion du Resize (cycle de vie Surface + Depth)
- [ ] Handler `WindowEvent::Resized` dans `AppRunner::window_event` (`app.rs`)
- [x] Handler `WindowEvent::Resized` dans `AppRunner::window_event` (`app.rs`) *(Étape 11, 2026-09-18)*
→ recalculer `size`, prévenir de ne pas rendre tant que la taille est invalide (0).
- [ ] Reconfigurer la surface (`Context::configure`) à la nouvelle taille.
- [ ] Recréer la depth texture à la nouvelle taille (`Renderer::resize_depth(width, height)`)
- [x] Reconfigurer la surface (`Context::configure`) à la nouvelle taille.
- [x] Recréer la depth texture à la nouvelle taille (`Renderer::resize_depth(width, height)`)
— le helper `create_depth_texture` isolé (Étape 9, D3) rend ce recreate trivial.
- [ ] Collecte du nouveau format si la configuration change (srgb etc.) → re-valider la compat pipeline.
- [x] Collecte du nouveau format si la configuration change (srgb etc.) → re-valider la compat pipeline.
*(D4 : `App::resize` compare l'ancien/nouveau format et re-synchronise Renderer (`set_format`) + Scene (`init_gpu`) ; cas pathologique, structuré non exercé couramment)*
> Reporté hors de l'Étape 9 (depth buffer) : l'app ne gère aujourd'hui aucun resize — la surface
> n'est configurée qu'au démarrage (`resumed`). Chantier dédié, acté en D3 (2026-09-18).
> Géré en Étape 11 (2026-09-18) : la surface est désormais reconfigurée à chaque `Resized` et la
> depth texture recréée en même temps (helper `create_depth_texture` isolé, Étape 9, D3). Le present
> mode FIFO reste figé (voir Notes de Décision).
---