poll_event
This commit is contained in:
@@ -31,14 +31,11 @@ fn main() {
|
||||
while !p.should_close() {
|
||||
p.poll_events(None);
|
||||
|
||||
// drain_events() borrowt &mut self → close erst nach dem Loop setzen.
|
||||
let mut close = false;
|
||||
for ev in p.drain_events() {
|
||||
while let Some(ev) = p.poll_event() {
|
||||
if let Event::Key { key: Key::Escape, pressed: true, .. } = ev {
|
||||
close = true;
|
||||
p.request_close();
|
||||
}
|
||||
}
|
||||
if close { p.request_close(); }
|
||||
|
||||
let (w, _h) = p.framebuffer_size();
|
||||
let fb = p.framebuffer_mut();
|
||||
@@ -58,8 +55,14 @@ fn main() {
|
||||
Default = 800×600 Fenster, 320×240 Framebuffer, 4:3, `palette::RGB332`.
|
||||
- `Platform::new(cfg)` – Fenster + GPU-Pipeline aufsetzen.
|
||||
- `poll_events(timeout)` – winit-Events einlesen (`None` = blockierend).
|
||||
- `poll_event() -> Option<Event>` – ein Event aus der Queue holen. Gibt
|
||||
`&mut self` nach jedem Call frei, sodass im Loop direkt auf die Platform
|
||||
reagiert werden kann (`request_close`, `set_mouse_capture`, `palette_mut` …).
|
||||
Empfohlen für die normale Event-Schleife.
|
||||
- `drain_events()` – Iterator über `Event` (`Key`, `Char`, `MouseMove`,
|
||||
`MouseBtn`, `Resize`, `CloseRequested`).
|
||||
`MouseBtn`, `Resize`, `CloseRequested`). Borrowt `&mut self` bis der
|
||||
Iterator fertig ist — Reaktionen auf die Platform müssen dann nach dem
|
||||
Loop angewandt werden. Nützlich für reines Loggen/Filtern.
|
||||
- `framebuffer_mut()` – `&mut [u8]` der Länge `w*h`, je Pixel ein Paletten-Index.
|
||||
- `palette_mut()` / `palette()` – `&mut [[u8; 3]; 256]` bzw. `&[...]`; Schreibzugriff
|
||||
markiert die Palette dirty, der nächste `present()` lädt sie hoch.
|
||||
|
||||
Reference in New Issue
Block a user