๐ŸŽ›๏ธ :: Nannou์˜ ๊ธฐ์ˆ ์  ๋ถ„์„ ๋ฐ ๋น„๊ต

BamgasiJMยท2026๋…„ 3์›” 2์ผ

Nannou <BASIC>

๋ชฉ๋ก ๋ณด๊ธฐ
2/41
post-thumbnail

1. ์„œ๋ก  (Introduction)

์ œ๋„ˆ๋ ˆ์ดํ‹ฐ๋ธŒ ์•„ํŠธ (Generative Art) ๋ฐ ํฌ๋ฆฌ์—์ดํ‹ฐ๋ธŒ ์ฝ”๋”ฉ (Creative Coding) ๋ถ„์•ผ์—์„œ๋Š” ์‹œ๊ฐ์  ํ‘œํ˜„์˜ ์‹ค์‹œ๊ฐ„์„ฑ, ์—ฐ์‚ฐ ์„ฑ๋Šฅ, ๊ทธ๋ฆฌ๊ณ  ์•ˆ์ •์„ฑ์ด ์ค‘์š”ํ•œ ๊ธฐ์ˆ ์  ์š”๊ตฌ์‚ฌํ•ญ์ด๋‹ค. ๊ธฐ์กด์—๋Š” Processing(Java ๊ธฐ๋ฐ˜) ๊ณผ openFrameworks(C++ ๊ธฐ๋ฐ˜) ๊ฐ€ ์ด ๋ถ„์•ผ์˜ ํ‘œ์ค€ ๋„๊ตฌ๋กœ ์ž๋ฆฌ ์žก์•˜์œผ๋‚˜, Rust ์–ธ์–ด์˜ ๋ถ€์ƒ๊ณผ ํ•จ๊ป˜ Nannou ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ƒˆ๋กœ์šด ๋Œ€์•ˆ์œผ๋กœ ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ๋‹ค. ๋ณธ ๋ถ„์„์€ Nannou ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์  ์ด์ ์„ ๊ทœ๋ช…ํ•˜๊ณ , ๊ธฐ์กด ๋„ค์ดํ‹ฐ๋ธŒ ๋„๊ตฌ์ธ Processing ๋ฐ openFrameworks ์™€์˜ ์•„ํ‚คํ…์ฒ˜์  ์ฐจ์ด๋ฅผ ๋น„๊ตํ•œ๋‹ค.

2. Nannou ๋ฅผ ํ™œ์šฉํ•œ ์ œ๋„ˆ๋ ˆ์ดํ‹ฐ๋ธŒ ์•„ํŠธ์˜ ๊ธฐ์ˆ ์  ์šฐ์œ„

2.1. ๊ฒฐ์ •๋ก ์  ์„ฑ๋Šฅ๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋ถ€์žฌ (Deterministic Performance without GC)

์ œ๋„ˆ๋ ˆ์ดํ‹ฐ๋ธŒ ์•„ํŠธ, ํŠนํžˆ ๊ณ ํ•ด์ƒ๋„ ๋น„๋””์˜ค ์ถœ๋ ฅ์ด๋‚˜ ๋ณต์žกํ•œ ํŒŒํ‹ฐํด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ, ํ”„๋ ˆ์ž„ ๋“œ๋กญ (Frame Drop) ์€ ์น˜๋ช…์ ์ด๋‹ค. Processing ์€ Java ๊ฐ€์ƒ ๋จธ์‹  (JVM) ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (GC) ์— ์˜ํ•œ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์ง€์—ฐ (Latency Spike) ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜๋ฉด, Nannou ๋Š” Rust ๋กœ ์ž‘์„ฑ๋˜์–ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ๊ฐ€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ œ์–ด๋˜๋ฏ€๋กœ, ๋Ÿฐํƒ€์ž„ ์ค‘ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ์ผ์ •ํ•œ ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ (Frame Rate) ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์žฅ์‹œ๊ฐ„ ์„ค์น˜ ๋ฏธ์ˆ  (Installation Art) ์ด๋‚˜ ์‹ค์‹œ๊ฐ„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์‹œ์Šคํ…œ์—์„œ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ด๋‹ค.

2.2. ํ˜„๋Œ€์  ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ (wgpu ๊ธฐ๋ฐ˜)

๊ธฐ์กด์˜ Processing ๋ฐ openFrameworks ๋Š” ์ฃผ๋กœ OpenGL ์— ์˜์กดํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. OpenGL ๋Š” ๋“œ๋ผ์ด๋ฒ„ ์˜์กด์„ฑ์ด ๋†’๊ณ , ์ตœ์‹  GPU ์•„ํ‚คํ…์ฒ˜ (Vulkan, Metal, DirectX 12) ๋ฅผ ์™„์ „ํžˆ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•˜๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
Nannou ๋Š” Rust ๊ธฐ๋ฐ˜์˜ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ทธ๋ž˜ํ”ฝ์Šค API ์ธ wgpu(WebGPU ํ‘œ์ค€ ๊ธฐ๋ฐ˜) ๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ํ™œ์šฉํ•œ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์ œ๊ณตํ•œ๋‹ค:

  • ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ผ๊ด€์„ฑ: Windows, macOS, Linux ์—์„œ ๋™์ผํ•œ ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์˜ ๋ถˆ์ผ์น˜๋ฅผ ์ตœ์†Œํ™”ํ•œ๋‹ค.
  • ์ปดํ“จํŠธ ์…ฐ์ด๋” (Compute Shader) ์ง€์›: GPU ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•œ ๋ณต์žกํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ (์œ ์ฒด ์—ญํ•™, ๊ตฐ์ง‘ ํ–‰๋™ ๋“ฑ) ์„ ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ ๋‚ด์—์„œ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

2.3. ์•ˆ์ „ํ•œ ๋™์‹œ์„ฑ ์—ฐ์‚ฐ (Safe Concurrency for Simulation)

์ œ๋„ˆ๋ ˆ์ดํ‹ฐ๋ธŒ ์•„ํŠธ๋Š” ์ข…์ข… ์ˆ˜๋งŒ ๊ฐœ์˜ ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค. Rust ์˜ ์†Œ์œ ๊ถŒ ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค (Data Race) ์—†์ด ์Šค๋ ˆ๋“œ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. Nannou ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฌด๊ฑฐ์šด ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ ๋ฉ”์ธ ๋ Œ๋”๋ง ์Šค๋ ˆ๋“œ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋”๋ผ๋„, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์˜ ์•ˆ์ „์„ฑ์„ ๊ฒ€์ฆํ•œ๋‹ค. ์ด๋Š” ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ์„ฑ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋ฉด์„œ๋„ ํฌ๋ž˜์‹œ ์—†๋Š” ์•ˆ์ •์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

2.4. ๋‹จ์ผ ์ •์  ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐฐํฌ (Single Static Binary Deployment)

Nannou ๋กœ ์ปดํŒŒ์ผ๋œ ์•„ํŠธ์›Œํฌ๋Š” ๋ชจ๋“  ์˜์กด์„ฑ์ด ๋งํฌ๋œ ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ (Static Binary) ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ์ด๋Š” Java ๋Ÿฐํƒ€์ž„ (Processing) ์ด๋‚˜ ํŠน์ • DLL/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (openFrameworks) ๋ฅผ ๋Œ€์ƒ ์‹œ์Šคํ…œ์— ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ œ๊ฑฐํ•œ๋‹ค. ์ „์‹œ์žฅ์ด๋‚˜ ๊ณต๊ณต ๊ณต๊ฐ„์˜ ํ‚ค์˜ค์Šคํฌ ํ™˜๊ฒฝ์—์„œ ๋ฐฐํฌ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

3. ๊ธฐ์กด ๋„ค์ดํ‹ฐ๋ธŒ ๋„๊ตฌ์™€์˜ ๋น„๊ต ๋ถ„์„ (Comparative Analysis)

๋น„๊ต ํ•ญ๋ชฉNannou (Rust)Processing (Java)openFrameworks (C++)
๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ์†Œ์œ ๊ถŒ ๋ฐ ๋นŒ๋ฆผ (Ownership)
์ปดํŒŒ์ผ ํƒ€์ž„ ๊ฒ€์ฆ, ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์Œ
๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (GC)
์ž๋™ ๊ด€๋ฆฌ๋˜๋‚˜ ๋Ÿฐํƒ€์ž„ ์ง€์—ฐ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
์ˆ˜๋™ ๊ด€๋ฆฌ (Manual)
๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌ, ์˜ค๋ฅ˜ ์œ„ํ—˜์„ฑ ์กด์žฌ
๊ทธ๋ž˜ํ”ฝ์Šค ๋ฐฑ์—”๋“œwgpu (WebGPU)
Vulkan/Metal/DX12 ์ถ”์ƒํ™”, ๋ฏธ๋ž˜ ์ง€ํ–ฅ์ 
OpenGL (์ฃผ๋ฅ˜)
๋ ˆ๊ฑฐ์‹œ ๋ชจ๋“œ ๋ฐ ์ฝ”์–ด ํ”„๋กœํŒŒ์ผ ํ˜ผ์šฉ
OpenGL
๊ด‘๋ฒ”์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์ง€์›์ด๋‚˜ ๊ตฌ์‹ API ์˜์กด
๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋†’์Œ (Safe Threads)
์–ธ์–ด ๋ ˆ๋ฒจ์—์„œ ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ ๋ณด์žฅ
์ œํ•œ์ 
JVM ์Šค๋ ˆ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜ GUI ์Šค๋ ˆ๋“œ์™€ ๋™๊ธฐํ™” ์ฃผ์˜ ํ•„์š”
์ค‘๊ฐ„ (Unsafe Threads)
C++ ์Šค๋ ˆ๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค ์œ„ํ—˜
์ƒํƒœ๊ณ„ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์„ฑ์žฅ ์ค‘
Rust ํฌ๋ ˆ์ดํŠธ ์ƒํƒœ๊ณ„ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‚˜ ํŠนํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒ๋Œ€์  ๋ถ€์กฑ
๋งค์šฐ ํ’๋ถ€
10 ๋…„ ์ด์ƒ์˜ ์ถ•์ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž์‚ฐ
ํ’๋ถ€ํ•จ
C++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๋™์ด ์šฉ์ดํ•˜๋‚˜ ๋นŒ๋“œ ์„ค์ • ๋ณต์žก
๋ฐฐํฌ ํ˜•ํƒœ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ
๋Ÿฐํƒ€์ž„ ์˜์กด์„ฑ ์ตœ์†Œํ™”
JAR ๋ฐ ๋Ÿฐํƒ€์ž„ ํ•„์š”
Java ํ™˜๊ฒฝ ์„ค์ • ํ•„์š”
๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
OS ๋ณ„ ๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ด€๋ฆฌ ํ•„์š”
์ปดํŒŒ์ผ ๋ชจ๋ธAOT (Ahead-Of-Time)
์ตœ์ ํ™”๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ƒ์„ฑ
JIT (Just-In-Time)
JVM ์œ„์—์„œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐ ์ปดํŒŒ์ผ ํ˜ผ์šฉ
AOT
๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ์ƒ์„ฑ

3.1 Processing ๊ณผ์˜ ์ฐจ๋ณ„์ : ๋Ÿฐํƒ€์ž„ ์•„ํ‚คํ…์ฒ˜

Processing ์€ '์Šค์ผ€์น˜' ๊ฐœ๋…์„ ํ†ตํ•ด ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JVM ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ’‹ํ”„๋ฆฐํŠธ๊ฐ€ ํฌ๊ณ , ์žฅ๊ธฐ ์‹คํ–‰ ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ GC ๋กœ ์ธํ•œ ํ”„๋ ˆ์ž„ ์Šคํ‚ต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. Nannou ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋˜๋ฏ€๋กœ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ์ด ์›”๋“ฑํžˆ ๋†’์œผ๋ฉฐ, ํ•˜๋“œ์›จ์–ด์— ์ง์ ‘์ ์ธ ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ์„ผ์„œ ์—ฐ๋™์ด๋‚˜ ์ €์ˆ˜์ค€ ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌํ•˜๋‹ค.

3.2. openFrameworks ์™€์˜ ์ฐจ๋ณ„์ : ๋นŒ๋“œ ์‹œ์Šคํ…œ ๋ฐ ์•ˆ์ „์„ฑ

openFrameworks ๋Š” C++ ์˜ ์„ฑ๋Šฅ์„ ํ™œ์šฉํ•˜์ง€๋งŒ, Makefile ๋˜๋Š” IDE ํ”„๋กœ์ ํŠธ ์„ค์ • (Visual Studio, Xcode ๋“ฑ) ์ด ๋ณต์žกํ•˜์—ฌ ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๊ตฌ์ถ•์— ๋น„์šฉ์ด ๋“ ๋‹ค. ๋˜ํ•œ, C++ ์˜ ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์œผ๋กœ ์ธํ•œ ์„ธ๊ทธ๋ฉ˜ํ…Œ์ด์…˜ ํดํŠธ (Segmentation Fault) ์œ„ํ—˜์ด ์ƒ์กดํ•œ๋‹ค.
Nannou ๋Š” Cargo ๋ผ๋Š” ํ†ตํ•ฉ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ ๊ด€๋ฆฌ์™€ ๋นŒ๋“œ ๊ณผ์ •์ด ๋‹จ์ˆœํ•˜๋‹ค. ๋˜ํ•œ, Rust ์˜ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ์ฐจ๋‹จํ•˜๋ฏ€๋กœ, ๋””๋ฒ„๊น…์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์•„ํŠธ์›Œํฌ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

4. ๊ฒฐ๋ก  (Conclusion)

Nannou ๋Š” ์ œ๋„ˆ๋ ˆ์ดํ‹ฐ๋ธŒ ์•„ํŠธ ๋ถ„์•ผ์—์„œ ์„ฑ๋Šฅ (Performance), ์•ˆ์ •์„ฑ (Stability), ํ˜„๋Œ€์„ฑ (Modernity) ์„ ๋™์‹œ์— ์ถ”๊ตฌํ•˜๋Š” ๋„๊ตฌ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. Processing ์ด ๊ฐ€์ง„ ์ ‘๊ทผ์„ฑ๊ณผ ์ƒํƒœ๊ณ„์˜ ํ’๋ถ€ํ•จ, openFrameworks ๊ฐ€ ๊ฐ€์ง„ ํ•˜๋“œ์›จ์–ด ์ œ์–ด ๋Šฅ๋ ฅ๊ณผ ์„ฑ๋Šฅ์„ ์ž‡๋Š” ์ค‘๊ฐ„ ์ง€์ ์ด์ž, ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ๋” ์ง„๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ๊ณผ ๊ทธ๋ž˜ํ”ฝ์Šค ํŒŒ์ดํ”„๋ผ์ธ์„ adopts ํ•˜๊ณ  ์žˆ๋‹ค.
ํŠนํžˆ, ์žฅ์‹œ๊ฐ„ ๊ตฌ์ „์ด ํ•„์š”ํ•œ ๋ฏธ๋””์–ด ํŒŒ์‚ฌ๋“œ, ๊ณ ํ•ด์ƒ๋„ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ์‹œ๊ฐํ™” ์ž‘์—…, ๊ทธ๋ฆฌ๊ณ  ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์ด ํ•„์ˆ˜์ ์ธ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์•„ํŠธ์—์„œ Nannou ๋Š” ๊ธฐ์กด ๋„๊ตฌ๋“ค์˜ ๊ธฐ์ˆ ์  ํ•œ๊ณ„ (GC ์ง€์—ฐ, OpenGL ์˜์กด์„ฑ, ๋ฉ”๋ชจ๋ฆฌ ๋ถˆ์•ˆ์ •์„ฑ) ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์•ˆ์  ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋น„๋ก ์ƒํƒœ๊ณ„์˜ ๊ทœ๋ชจ๋Š” ๊ธฐ์กด ๋„๊ตฌ๋ณด๋‹ค ์ž‘์„ ์ˆ˜ ์žˆ์œผ๋‚˜, Rust ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ ์  ํ† ๋Œ€๋Š” ์ „๋ฌธ์ ์ธ ๋ฏธ๋””์–ด ์•„ํŠธ ์„ค์น˜ ๋ฐ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์— ์žˆ์–ด ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์‹คํ–‰ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ์šฐ์œ„๋ฅผ ์ ํ•œ๋‹ค.

profile
Coding Art with Blender / oF / Processing / p5.js / nannou

0๊ฐœ์˜ ๋Œ“๊ธ€