docs: move DRAFT.md into docs/ and confirm step decisions
DRAFT.md now lives in docs/. Confirmed the pending design decisions: render() auto-renders the scene by default (Option A, alternative B removed), and simple.rs uses app.renderer.device()/format() via the library API without importing wgpu.
This commit is contained in:
+16
-26
@@ -1,8 +1,8 @@
|
||||
# DRAFT — Brouillon d'implémentation
|
||||
|
||||
> **Usage.** Ce fichier sert de brouillon pour noter les idées et le plan détaillé de l'étape en cours.
|
||||
> **Son contenu est effacé au début de chaque nouvelle étape.** La source de vérité de l'état est
|
||||
> le code + README.md ; les docs `docs/*` restent stables.
|
||||
> **Usage.** Ce fichier (dans `docs/`) sert de brouillon pour noter les idées et le plan détaillé de l'étape
|
||||
> en cours. **Son contenu est effacé au début de chaque nouvelle étape.** La source de vérité de l'état est
|
||||
> le code + README.md ; les autres docs `docs/*` restent stables.
|
||||
|
||||
---
|
||||
|
||||
@@ -82,8 +82,7 @@ pub fn render_scene(&self, view: &wgpu::TextureView, scene: &Scene) {
|
||||
```
|
||||
- **Batching** : un seul pass pour toutes les entités (aligné sur le principe « batching par matériau »
|
||||
évoqué dans renderer.rs / README Phase 4.3). On évite N submits/encoder alloués à la volée.
|
||||
- Conserver `render(view, mesh, material)` (API bas-niveau utilisée par `manual.rs`). Le battle placer du code
|
||||
commun (layout pass / draw d'un mesh) dans un petit helper privé pour éviter la duplication.
|
||||
- Conserver `render(view, mesh, material)` (API bas-niveau utilisée par `manual.rs`). Le battle placer du code commun (layout pass / draw d'un mesh) dans un petit helper privé pour éviter la duplication.
|
||||
- Import `crate::scene::Scene`.
|
||||
- Documenter selon `docs/DOCUMENTATION.md`.
|
||||
|
||||
@@ -97,21 +96,14 @@ pub fn render_scene(&self, view: &wgpu::TextureView) {
|
||||
self.renderer.render_scene(view, &self.scene);
|
||||
}
|
||||
```
|
||||
Puis décider où placer l'appel automatique (question de design à trancher à l'implémentation) :
|
||||
|
||||
- **Option A (recommandée)** : rendre `render` du trait **par défaut** en auto-rendu :
|
||||
```rust
|
||||
fn render(&mut self, app: &mut App, frame: &Frame) {
|
||||
app.render_scene(frame.view());
|
||||
}
|
||||
```
|
||||
→ `simple.rs` **n'implémente même pas `render`** : la scène se rend toute seule, exactement l'esprit
|
||||
« scene auto-render ». L'utilisateur avancé peut surcharger `render` pour contrôler le dessin.
|
||||
- Option B : garder `render` obligatoire mais vide par défaut + appel manuel de `app.render_scene` dans
|
||||
`simple.rs`. Moins « magique », garde ~15 lignes quand même.
|
||||
|
||||
> Décision à valider : **Option A** (le README attend le rendu automatique de la scène ; `render()` par
|
||||
> défaut vide + auto-render est la solution la plus simple pour `simple.rs`).
|
||||
Le rendu automatique est branché par **défaut** dans le trait (**Option A, décidée**) :
|
||||
```rust
|
||||
fn render(&mut self, app: &mut App, frame: &Frame) {
|
||||
app.render_scene(frame.view());
|
||||
}
|
||||
```
|
||||
→ `simple.rs` **n'implémente même pas `render`** : la scène se rend toute seule, exactement l'esprit
|
||||
« scene auto-render ». L'utilisateur avancé peut surcharger `render` pour contrôler le dessin.
|
||||
|
||||
### Étape 3.4 — Remplir `simple.rs`
|
||||
|
||||
@@ -127,11 +119,9 @@ Puis décider où placer l'appel automatique (question de design à trancher à
|
||||
- Tout ce remplissage se fait dans `AppHandler::update()` (ou dans `run()` avant `app.run(...)` — à voir
|
||||
selon où `app` est constructible ; le plus simple : dans `update(&mut self, app)` une fois).
|
||||
|
||||
> ⚠️ Les vertex passent par `Mesh::new(device, ...)` qui exige `wgpu::Device`. Pour rester « sans wgpu »
|
||||
> dans `simple.rs`, il faut soit exposer un helper de haut niveau (`app.scene.add_quad(...)`, futur),
|
||||
> soit accepter `app.renderer.device()` (accès bibliothèque, pas wgpu importé par l'utilisateur).
|
||||
> **Décision à valider** : pour l'étape 1, utiliser `app.renderer.device()`/`app.renderer.format()`
|
||||
> (l'utilisateur n'importe pas wgpu). Un helper `Scene::add_quad_entity` pourra être ajouté plus tard.
|
||||
> ⚠️ Les vertex passent par `Mesh::new(device, ...)` qui exige `wgpu::Device`. **Décision prise** : pour
|
||||
> l'étape 1, utiliser `app.renderer.device()`/`app.renderer.format()` (accès bibliothèque — l'utilisateur
|
||||
> n'importe pas wgpu). Un helper haut niveau `Scene::add_quad_entity` pourra être ajouté plus tard.
|
||||
|
||||
### Étape 3.5 — Validation
|
||||
|
||||
@@ -145,7 +135,7 @@ cargo fmt --all
|
||||
- Vérifier docs (`docs/DOCUMENTATION.md`) : zéro warning, backticks, chaque item public documenté.
|
||||
- Committer proprement (conventional commits, ex. `feat(app): expose frame view and auto-render scene`).
|
||||
|
||||
## 4. Décisions prises / à trancher
|
||||
## 4. Décisions (actées)
|
||||
|
||||
| Sujet | Décision |
|
||||
|-------|----------|
|
||||
Reference in New Issue
Block a user