
nannou์์๋ app(model).update(update).event(event).view(view)... ํํ๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฑ๋กํฉ๋๋ค.
์ด๋ ๊ฐ ์ฝ๋ฐฑ์ ์ ํด์ง ์๊ทธ๋์ฒ(์ธ์ ํ์
)๋ฅผ ๊ฐ์ง๋๋ฐ, ์ค์ ๋ก ๋ชจ๋ ์ธ์๋ฅผ ๋ค ์ฐ๋ ๊ฒฝ์ฐ๋ ๋๋ญ
๋๋ค.
์ปดํ์ผ๋ฌ๋ "์ ์ฐ๋ ๋ณ์"์ ๊ฒฝ๊ณ ๋ฅผ ๋ด๊ธฐ ๋๋ฌธ์, ํ์ ์๋ ์ธ์๋ _ ํน์ _name์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ๋ฉ๋๋ค.
| ํจ์ | ์๊ทธ๋์ฒ | ์ธ์ ์ค๋ช | ์ฃผ๋ก ํ์ํ ์ํฉ |
|---|---|---|---|
| model | fn(&App) -> Model | app: ์ ์ญ ์ฑ ์ํ | - ์๋์ฐ ํฌ๊ธฐ/์์น ๊ฐ์ ธ์ฌ ๋ - ํ ์ค์ฒ, ์บก์ฒ ์ด๊ธฐํ |
| update | fn(&App, &mut Model, Update) | app: ์ ์ญ ์ ๋ณดmodel: ์ฌ์ฉ์ ์ ์ ์ํupdate: ๋ธํํ์ ๋ฑ | - ๋ชจ๋ธ ๊ฐ ๋งค ํ๋ ์ ๊ฐฑ์ - ์ ๋๋ฉ์ด์ , ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ |
| event | fn(&App, &mut Model, Event) | event: ๋ชจ๋ ์
๋ ฅ/์๋์ฐ ์ด๋ฒคํธ | - ๋ง์ฐ์ค/ํค๋ณด๋ ์ ์ด - ์๋์ฐ ํฌ๊ธฐ ๋ณ๊ฒฝ ๋ฐ์ |
| view | fn(&App, &Model, Frame) | app: draw ํธ๋ค ์ ๊ทผmodel: ํ์ฌ ์ํ ์ฝ๊ธฐframe: ์ด๋ฒ ํ๋ ์ ์บ๋ฒ์ค | - ํ๋ฉด ๊ทธ๋ฆฌ๊ธฐ |
| exit | fn(&App, &mut Model) | ์ฑ ์ข ๋ฃ ์ ํธ์ถ | - ํ์ผ ์ ์ฅ, ๋ฆฌ์์ค ํด์ |
&App์ ์ญ ์ฑ ์ํ๋ฅผ ์๋ฏธ
app.draw() โ ๊ทธ๋ฆผ ๊ทธ๋ฆด ๋app.time โ ๊ฒฝ๊ณผ ์๊ฐ ์ฐธ์กฐapp.window_rect() โ ์๋์ฐ ํฌ๊ธฐ/์ขํ ์ฌ์ฉ์ ์ฐ๋ ๊ฒฝ์ฐ: ๋จ์ํ ๋ชจ๋ธ ๊ฐ๋ง ๊ฐฑ์ ํ ๋
&mut Model ํน์ &Model์ฌ์ฉ์ ์ ์ ์ํ ๊ตฌ์กฐ์ฒด
update์์ &mut Model โ ๊ฐ ๋ณ๊ฒฝview์์ &Model โ ๊ฐ ์ฝ๊ธฐ์ ์ฐ๋ ๊ฒฝ์ฐ: ์ํ ์์ด ๋๋ค ๊ทธ๋ฆผ๋ง ๊ทธ๋ฆฌ๊ณ ์ถ์ ๋
ํ๋ ์๋ณ ๊ฐฑ์ ์ ๋ณด (delta time ํฌํจ)
update.since_last โ ๊ฒฝ๊ณผ ์๊ฐ ํ์ฉ์ ์ฐ๋ ๊ฒฝ์ฐ: frame count ๊ธฐ๋ฐ ์ ๋๋ฉ์ด์ ๋ง ํ ๋
๋ชจ๋ ์ ๋ ฅ ์ด๋ฒคํธ๊ฐ ๋ค์ด์ค๋ ๊ด๋ฌธ
KeyPressed, KeyReleased)MouseMoved, MousePressed, MouseReleased)Resized, Moved)์ ์ฐ๋ ๊ฒฝ์ฐ: ์ ๋ ฅ์ ์ฐ์ง ์๊ณ ์๋์ผ๋ก ๊ทธ๋ฆผ๋ง ๊ฐฑ์ ํ ๋
ํ์ฌ ํ๋ ์์ ์บ๋ฒ์ค
draw.to_frame(app, &frame) โ ์ค์ ํ๋ฉด์ ์ถ๋ ฅ์ ์ฐ๋ ๊ฒฝ์ฐ: view๋ฅผ ์ ์ฐ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ (ํญ์ ํ์)
| ๋ฉ์๋/์ต์ | ์์น (App vs Window) | ์ธ์ ๋๋ ๋๊ฒจ์ฃผ๋ ํจ์ | ํจ์(์ฝ๋ฐฑ) ์๊ทธ๋์ฒ | ์ญํ ์์ฝ |
|---|---|---|---|---|
app(model) | App ๋น๋ ์์ | model: fn(&App) -> Model | fn(&App) -> Model | ์ฑ ์ํ ๋ง๋ค๊ธฐ |
.update(update) | App | update: fn(&App, &mut Model, Update) | fn(&App, &mut Model, Update) | ๋งค ํ๋ ์ ์ํ ๊ฐฑ์ |
.event(event) | App | event: fn(&App, &mut Model, Event) | fn(&App, &mut Model, Event) | ์ ์ญ ์ ๋ ฅ / ์ด๋ฒคํธ ์ฒ๋ฆฌ |
.simple_window(view) | App | view: fn(&App, &Model, Frame) | fn(&App, &Model, Frame) | ๋จ์ ์๋์ฐ + ๋ทฐ ๋ง๋ค๊ธฐ |
.size(w, h) | App | w: u32, h: u32 | โ | ์๋์ฐ ๋๋น/๋์ด ์ค์ |
.loop_mode(mode) | App | mode: LoopMode | โ | ์คํ ๋ฐฉ์ ์กฐ์ (vsync, ๊ณ ์ ์๋ ๋ฑ) |
.exit(exit_fn) | App | exit_fn: fn(&App, Model) | fn(&App, Model) | ์ฑ ์ข ๋ฃ ์ ํธ์ถ |
.run() | App | โ | โ | ์ฑ ์์ |
| ๋ฉ์๋/์ต์ | ์์น (Window) | ์ธ์ ๋๋ ๋๊ฒจ์ฃผ๋ ํจ์ | ํจ์(์ฝ๋ฐฑ) ์๊ทธ๋์ฒ | ์ญํ ์์ฝ |
|---|---|---|---|---|
.view(view_fn) | Window | fn(&App, &Model, Frame) | fn(&App, &Model, Frame) | ํด๋น ์๋์ฐ ๊ทธ๋ฆฌ๊ธฐ ํจ์ |
.raw_view(raw_view_fn) | Window | fn(&App, &Model, RawFrame) | fn(&App, &Model, RawFrame) | ์ ์์ค ๋ ๋๋ง |
.sketch(sketch_fn) | Window | fn(&App, Frame) | fn(&App, Frame) | ๊ฐ๋จํ ์ค์ผ์น ๋ชจ๋ |
.event(event_fn) | Window | fn(&App, &mut Model, WindowEvent) | fn(&App, &mut Model, WindowEvent) | ์๋์ฐ ์ด๋ฒคํธ ์ ์ฒด |
.raw_event(raw_event_fn) | Window | fn(&App, &mut Model, winit::WindowEvent) | fn(&App, &mut Model, WindowEventRaw) | ์์ ์๋์ฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
.key_pressed(f) / .key_released(f) | Window | fn(&App, &mut Model, Key) | fn(&App, &mut Model, Key) | ํค ์ ๋ ฅ ์ฒ๋ฆฌ |
.received_character(f) | Window | fn(&App, &mut Model, char) | fn(&App, &mut Model, char) | ๋ฌธ์ ์ ๋ ฅ ์ฒ๋ฆฌ |
.mouse_moved(f) | Window | fn(&App, &mut Model, Point2) | fn(&App, &mut Model, Point2) | ๋ง์ฐ์ค ์์ง์ ๊ฐ์ง |
.mouse_pressed(f) / .mouse_released(f) | Window | fn(&App, &mut Model, MouseButton) | fn(&App, &mut Model, MouseButton) | ๋ง์ฐ์ค ๋ฒํผ |
.mouse_wheel(f) | Window | fn(&App, &mut Model, MouseScrollDelta) | fn(&App, &mut Model, MouseScrollDelta) | ํ /์คํฌ๋กค |
.mouse_entered(f) / .mouse_exited(f) | Window | fn(&App, &mut Model) | fn(&App, &mut Model) | ๋ง์ฐ์ค ์๋์ฐ ์ํ ์ด๋ |
.touch(f) | Window | fn(&App, &mut Model, TouchEvent) | fn(&App, &mut Model, TouchEvent) | ํฐ์น ์ ๋ ฅ |
.touchpad_pressure(f) | Window | fn(&App, &mut Model, TouchpadPressure) | fn(&App, &mut Model, TouchpadPressure) | ํฐ์นํจ๋ ์๋ ฅ๊ฐ์ง |
.moved(f) | Window | fn(&App, &mut Model, Point2) | fn(&App, &mut Model, Point2) | ์๋์ฐ ์์น ๋ฐ๋ |
.resized(f) | Window | fn(&App, &mut Model, Size2) | fn(&App, &mut Model, Size2) | ์๋์ฐ ํฌ๊ธฐ ๋ณ๊ฒฝ |
.focused(f) / .unfocused(f) | Window | fn(&App, &mut Model) | fn(&App, &mut Model) | ์๋์ฐ ํฌ์ปค์ค ํ๋/์์ค |
.closed(f) | Window | fn(&App, &mut Model) | fn(&App, &mut Model) | ์๋์ฐ ๋ซํ |
.hovered_file(f) / .dropped_file(f) | Window | fn(&App, &mut Model, PathBuf) | fn(&App, &mut Model, PathBuf) | ํ์ผ ๋๋๊ทธํด์ ๊ฐ์ ธ์ค๊ธฐ etc. |
.clear_color(color) | Window | color: IntoLinSrgba<f32> | โ | ๋ฐฐ๊ฒฝ์ ์ง์ |
.max_capture_frame_jobs(n) | Window | n: u32 | โ | ์บก์ฒ ํ๋ ์ ์์ ๋์ ์คํ ์ต๋ ๊ฐ์ |
โ โ๏ธ๐ ๏ธ๐๐๐จ๐ผ๏ธ๐งฉ๐ง ๐งฎ๐น๏ธ๐งฟโณ๐๏ธ๐ฎ๐๐ชฉ๐๏ธ๐๐งฐ๐
์๋ณด์นด๋
Sample
Important
Highlighting
๋น์
์ ํฉ์
purple
hot pink
yellow
์ด๊ตฌ์
orange
green
blue