์ข๋ ์์ฐ์ ์ธ ๊ฐค๋ถ์๊ธฐ?๋ฅผ ์ํด ํ๋ฒ ์จ๋ด ๋๋ค
์๋ ๋ถ์ ๋ญ ์ฝ์ ํ์ ์์ผ์๊ฒ๊ณ ์. ์์ง ๋ชจ๋ฅด๋ ๋ถ์ ์๋ฉด ์ด๋์ด ๋๋ ๋ด์ฉ... (์ด๋ฐ๊ฑฐ ์์ผ๋ฉด ๋ค๋ฅธ ๋ถ๋ค๋ ์ฌ๋ ค์ฃผ์๋ฉด ์ข๊ฒ ๋ค๋)
๋ญ ๊ฑฐ์ฐฝํ๊ฒ๋ ์๋๊ณ ๊ฐ๋จํ๊ฒ ๊ฐ๋ ์ ๋ฆฌ ๋๋์ผ๋ก ๊ฐ๊ฒ์ต๋๋ค.
์ผ๋จ ๋ชจ๋ฐ์ผ์ด๋ PC๋ ๊ทธ๋ํฝํ๋์จ์ด๋ 3D ์์ฃผ๋ก ๋ง๋ค์ด์ ธ์์ต๋๋ค
2d๊ฒ์์ ๋ง๋ค๋์กฐ์ฐจ ๊ทธ๋ฅ 3d๊ฐ์ ํ๋์จ์ด์์ ๋๋ฆฌ๋ ๊ฑฐ๋ผ๊ณ ๋ณด์ค ์ ์์ฃ
๊ทธ๋ฐ๋ฐ ํ์ธ๋์ 3d ๊ธฐ์ ์ vga ๋ฅ๋ ฅ๋ ์ค์ํ์ง๋ง ์ ์ง๋ชจ๋ฅด๊ฒ cpu๋นจ์ ๋ง์ด ํ๊ฒ ๋ง๋ค์ด์ ธ์์ต๋๋ค.
๊ฐ์ ์ ํด๋ด
๋๋ค.. 5๋
๋ง์ ์ปดํฐ ์
๊ทธ๋ ์ด๋๋ฅผ ํ๋๋ฐ ๊ตฌํ cpu๋ ๊ฑ ๋๋๊ณ ๋น๋์ค์นด๋๋ง ์ต์ ํ์ผ๋ก ๋ง์ท๋ค๊ณ ํด๋ด
์๋ค
๋ค๋ค ์์๋ฏ์ด ๊ทธ๋ผ ๋น๋์ค์นด๋๊ฐ ์๋ฌด๋ฆฌ ์ข์๋ cpu๊ฐ ๊ตฌ๋ ค์ ์ ์ฑ๋ฅ์ด ์๋๊ณ ๋๊ฐ ๋ชปํ๊ฒ ๋ฉ๋๋ค.
์ด๊ฑด ์ ๊ทธ๋ฌ๋๋ฉด draw ๊ธฐ๋ฅ์ ์ฝ๋์์ ์คํํ๋ฉด ๊ทธ ๋ช ๋ น์ vga๋ก ๋ณด๋ด์ฃผ๋ ์ญํ ์ cpu๊ฐ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค
๊ทธ๋์ ์ ๊ธํ ๋ vga๋ cpu๋ฅผ ๊ฐ์ ๊ธ์ผ๋ก ๋ง์ถฐ์ค์ผ ํ๋ ๊ฒ์ ๋๋ค
..๋ ์๊ธธ๋ก ์ ๊ฒ ๊ฐ์ง๋ง ์ฌ์ค ์ด๊ฒ ์ค์ํฉ๋๋ค.
vga๊ฐ ์ฑ๋ฅ์ด ์ข๋ค๋๊ฑด ์ผ๋จ ์๊ธฐํํ ๋ค์ด์จ ๋ ๋๋ง ๋ช ๋ น์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋๊ฑด ์์ฒญ ๋น ๋ฅด๋ค๋ ๊ฒ์ด์ฃ
๊ทผ๋ฐ vga์ ๋ฐ์ ์ ๋นํด์ API๋ ๋๋ผ์ด๋ฒ ์ฒด๊ณ๋ ๊ณ์ ์๋ ๋ฐฉ์์ด๋ผ์ ์ ์ด์ cpu๋ก๋ถํฐ vga๊น์ง ๋ช ๋ น์ด ๋ค์ด์ค๋ ๊ณผ์ ์ด ๋๋ฆฌ๋ค๋ ๊ฒ๋๋ค
์ฆ cpu๊ฐ ๋ณ๋ชฉ(bottleneck)์ด ๋๋ ๊ฒ๋๋ค. cpu->vga๋ก draw๋ช ๋ น์ ์ ๋ฌํ๋ ๊ณผ์ ์์ฒด๊ฐ ๋๋ฆฌ๋๊น vga๊ฐ ์ ์ฑ๋ฅ์ ๋ชป๋ด๊ฒ ๋ฉ๋๋ค.
๊ฒ์์ ๊ทธ๋ ค์ผํ๋ ๊ฐ์ฒด๊ฐ 1000๊ฐ ์๋ค๊ณ ์น๋ฉด
for๋ฌธ ๋์์ ๊ฐ์ฒด ์ ๋ถ draw ์ฝ์ ํด์ค์ผ๊ฒ ์ฃ ?
๊ทธ๋ผ draw์ฝ์ด ํ๋์ฉ vga๋ก ๋ค์ด๊ฐ๋๋ค.
์ผ๋จ vga๊ฐ 1๋ฒ์งธ draw๋ช
๋ น์ ๋ฐ๊ณ ์กด๋ ๋นจ๋ฆฌ ๊ทธ๊ฑธ ํ๋ฉด์ ๊ทธ๋ฆฝ๋๋ค.
๊ทผ๋ฐ vga๊ฐ 1๋ฒ์งธ ๋๋ก์ฐ๋ฅผ ๋๋๋๋ฐ๋ cpu๊ฐ ๋๋ผ์ด๋ฒ๋ ๋๋ ๋๋๋ผ ๋๋ฒ์งธ draw ๋ช ๋ น์ ์์ง vga์ ์ ๋ฌ์ ๋ชปํ์ต๋๋ค
์ด๊ฒ 1000๋ฒ ๋ฐ๋ณต๋ฉ๋๋ค...
vga๋ ์ผ๋จ ๋ค์ด์จ ์ผ์ ๊ธ์ธ ๋๋ด๊ณ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ํฑ์ํฑ์ ๋์ฃ .. ๊ทผ๋ฐ ์ ์ ๋ค์ ์ผ์ ์ค์ผ ํ๋ cpu๊ฐ ๋ฐ๋ก๋ฐ๋ก ์ ๋ฌ์ ๋ชปํฉ๋๋ค.
์ด๋ฌ๋ฉด FPS๊ฐ ์๋์ค๊ฒ ๋๋ ๊ฑฐ์ฃ
์ด ํ์์ ๋น์ฐํ๊ฒ๋.. PC๋ณด๋ค ์ฑ๋ฅ์ด ๋ฎ์ ๋ชจ๋ฐ์ผ์์ ๋ ํฌ๊ฒ ๋ถ๊ฐ๋ฉ๋๋ค.
๋ฌผ๋ก ์๋ ์ PC๊ฐ ์ง๊ธ๋ณด๋ค ๊ตฌ๋ฆด ๋ PC์์๋ ๋ง์ฐฌ๊ฐ์ง์๊ฒ์ฃ
๊ทธ๋์ ํด๊ฒฐ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋์จ๊ฒ ๋๊ฐ์ ์ฅ๋ฉด์ ๊ทธ๋ ค๋ draw call ํ์๋ฅผ ์ค์ด๋ ๊ฒ๋๋ค.
draw ๋ช ๋ น์ ํธ์ถํ๋ ํ์๋ฅผ ๊ฐ๋ฅํ ์ค์ด๊ณ
๋์ ์ ํ๋ฒ draw์ ์ต๋ํ ๋ง์ ๋ด์ฉ์ ์ฑ์์ ๋ณด๋ด์ ์ด๊ฑฐ์ ธ
draw ํ๋ฒ์ ๊ทธ๋ฆผ 1์ฅ ๋ณด๋ด๋ ๊ทธ๋ฆผ 10์ฅ์ ๋ณด๋ด๋ cpuํํ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๊ฐ์ผ๋๊น์
๋ง์ฐฌ๊ฐ์ง๋ก vga๋ 1์ฅ ์ค๋ 10์ฅ ์ค๋ ๊ธ์ธ ๋ ๋๋ง ๋๋ด๋ฒ๋ฆด ์ ์์ต๋๋ค. vga๋ ์๋ ๋น ๋ฆ ๋๋ค. ์๊ธฐ๊ฐ ์ผ๋๋ด๋ ์๋๋ณด๋ค ์ ์ผ์ ๋นจ๋ฆฌ ์์ค์ ๋ชปํ๋ ๊ฒ ๋ฟ..
๊ทธ๋์ draw call ์๋ฅผ ์ค์ด๋ฉด FPS๋ฅผ ํ๋ณดํ๊ธฐ ์ฌ์์ง๋ ๊ฒ์ด๊ณ ์
์ด๋์ ๋์ค๋๊ฒ batch rendering ๊ฐ๋ ์ ๋๋ค
batch๋ผ๋๊ฑฐ๋ ๋ณดํต '์ผ๊ด'์ด๋ผ๊ณ ๋ฒ์ญํ์ง๋ง ๋ค๋ฅด๊ฒ ๋งํ๋ฉด ๋ฐ๋ก๋ฐ๋ก ๋ณด๋ด์ง๋ง๊ณ ๋ญํ๊ธฐ๋ก ๋ฌถ์ด์ ๋ณด๋ด์ ์ด๊ฑด๋ฐ์
3d ์นด๋๋ ํ์ฌ ๋ ๋๋ง ์ํ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
์๋ง์ ์ํ๊ฐ ์๋๋ฐ์, ์ํ๋ค์ ์์๋ก๋ ๋ฒํ
์ค ์ ๋ณด๋, ์์น์ง์ ์ ์ํ ํ๋ ฌ, ์ฌ์ฉํ ํ
์ค์ฒ, ์ํํ
์คํธ ์ฌ๋ถ, ๋ธ๋ ๋ฉ ๋ฐฉ์, ์นด๋ฉ๋ผ ์ ๋ณด, ์๋๋ฉด ์
ฐ์ด๋ ์ฝ๋ ๋ฑ๋ฑ..
์ฐ๋ฆฌ๋ draw๋ผ๊ณ ์ฝ๊ฒ ๋งํ์ง๋ง ์ฌ์ค ํ๋ฒ์ draw๋ฅผ ํ๊ธฐ ์ํด์๋ ์ ๋ง์ ์ํ๋ค์ ๋ค ์ ํ ํด์ฃผ๊ณ ๋์์ผ draw 1ํ๊ฐ ๊ฐ๋ฅํ ๊ฑฐ์ฃ .
ํ๋ฒ์ draw์ ์ต๋ํ ๋ง์ ๋ด์ฉ์ ๊ทธ๋ฆฌ๋ ค๋ฉด ์ ์ํ๊ฐ ๊ฐ์ ๊ฒ๋ผ๋ฆฌ ๋ฌถ์ด์ค์ผ ํฉ๋๋ค. (์ฆ batch ํด์ค์ผ ํฉ๋๋ค)
ํ๋ง ์ํ ๊ฒ์์ ๊ฐ์ ํด๋ด ์๋ค
ํ๋ฉด์ ์ ์ด ์ ์ด์์ด 500๋ฐ์ด ๋ ์๋ค๋๊ณ ์์ต๋๋ค. ์ด์๋ค์ ์ ๋ถ ๋๊ฐ์ด ์๊ฒผ์ต๋๋ค. ๊ทธ๋์ 1๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ๊ณ ์๊ณ ์.
์ด๋ฌ๋ฉด 1ํ๋ ์์ ๋ ๋๋งํ ๋ ๋ชจ๋ ์ด์์ด ๊ฐ์ draw ์ํ๋ฅผ ํ์๋ก ํฉ๋๋ค. ๋จ์ง ๋ค๋ฅธ๊ฑด ์์น ์ ๋ณด ๋ฟ์ธ๋ฐ ์ด๋ฐ ์ ๋๋ ํ๋์ batch ์์์๋ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์ง์ ํด์ค ์ ์์ต๋๋ค.ย
2d๊ฒ์์ด๋ผ๋ฉด batch์์ ๊ฐ์ฅ ์ค์ํ๊ฒ ๊ณ ๋ คํ ์ํ์ ๋ณด๋ 'ํ ์ค์ฒ' ์ ๋๋ค.
์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ์์ด๋ ํ ์ค์ฒ๊ฐ ๊ฐ์ผ๋ฉด ํ๋์ batch๋ก ๋ฌถ์ ์ ์๋จ ๊ฑฐ์ฃ
ํ๋์ batch๋ ํ๋ฒ์ draw call ์ ์๋ฏธํ๋๊น, 500๋ฐ ์ด์์ด ์์ด๋ ํ ์ค์ฒ๋ง ๊ฐ์ผ๋ฉด 1๋ฒ draw๋ก ๋๋ด๋ ๊ฒ ๊ฐ๋ฅํ๊ฒ๋๋ค.
์ด๋์ด๋ค์..
๊ทผ๋ฐ ๊ฒ์์ ์ฌ๋ฌ ์บ๋ฆญํฐ๋ ์ค๋ธ์ ํธ๊ฐ ๋์ค๊ณ ํ
์ค์ฒ๋ ๊ฐ์ ๋ค์ํ ํ
๋ฐ ๋ batch๋ฅผ ์ ๋ฌถ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์ฌ๊ธฐ์ ๋์ค๋ ๊ฐ๋ ์ด texture atlas์ ๋๋ค.
"ํ ์ค์ฒ๊ฐ ๋ฌ๋ผ์ ๋ชป ๋ฌถ๋๋ค๊ณ ? ๊ทธ๋ผ ํ ์ค์ฒ๋ฅผ ํฉ์ณ์ ํ๋์ ์ด๋ฏธ์ง๋ก ๋ง๋ค์!"
๊ฐ๋ น ์ด์ ํ์
์ด 3๊ฐ์ง๊ฐ ์์ด์ 3์ข
์ ์ด๋ฏธ์ง๊ฐ ํ์ํ๋ค๋ฉด, ์ด๊ฑธ ํ๋์ ํ
์ค์ฒ๋ก ๋ฏธ๋ฆฌ ํฉ์ณ๋๊ณ ๋ ๋๋งํ ๋ ๊ฑฐ๊ธฐ์ ํฌํจ๋ ์ด๋ฏธ์ง์ ์์ญ์ ์ง์ ํด์ drawํ๋ ๊ฒ๋๋ค.
๊ทธ๋ผ ์ด์์ด 3์ข ๋ฅ๋ผ๋ ์ ๋ถ ํ๋์ batch๋ก ๋ฌถ์ ์๊ฐ ์์ต๋๋ค.
ํ ์ค์ฒ ์ํ๋ผ์ค๊ฐ ๋ญ์ง ๊ฐ์ด ์ ์์ค์๋ฉด ์ฏ๊พธ๋ฅดRPG๊ฐ์๋ฐ ๋ค์ด์๋ ๋งต ํ์ผ ํ ์ค์ฒ๋ฅผ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ์ฌ๋ฌ๊ฐ์ ํ์ผ์ด ํ์ฅ์ ์ด๋ฏธ์ง์ ํฉ์ณ์ ธ์๊ณ
๋งต์ ๊ทธ๋ฆด ๋๋ ๊ฐ ํ์ผ์ ์์ญ์ ๋ฐ์ ๋๋ก์ฐ๋ฅผ ํ๋ ๊ฑฐ์ฃ .
๋งตํ์ผ์ด ์ ๋ถ 1์ฅ์ ๋ค ๋ค์ด์๋ค๋ฉด ๋งต์ ๊ทธ๋ฆด ๋ ํ์ผ์ ํ๋ํ๋ ๊ทธ๋ฆฌ๋ ๊ฒ ์๋๋ผ batch๋ก ๋ฌถ์ด์ ์ ์ฒด ๋งต์ ํ๋ฐฉ์ ๊ทธ๋ฆฌ๋ ๊ฒ ๊ฐ๋ฅํ๊ฒ ๋๊ณ ์..
์ด์ ์์ง ์๊ธฐ๋ก ๋์ด๊ฐ๋๋ค...
์์ง๋ค์ ๊ทธ๋์ ๋น์ฐํ๊ฒ๋ ๋ณดํต ์ด batch ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค.
๊ทผ๋ฐ ์ง์ํ๋ ์ ๋๊ฐ ๋ค๋ฅด์ฃ .
์์์ ์ค๋ช ํ๋๋ก ํจ๊ณผ์ ์ธ batch rendering์ ํ๊ธฐ ์ํด์๋ ๋ฏธ๋ฆฌ ํ ์ค์ฒ ํ์ฅํ์ฅ์ ๊ฐ๊ธ์ ๋ง์ ๊ฐฏ์์ ์ด๋ฏธ์ง๋ฅผ ์ฑ์๋์์ผ ๋ฉ๋๋ค (=texture atlas)
์ด๊ณผ์ ์ texture packing์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ
์ด๊ฑธ ์๋์ผ๋ก ์์์ ํด์ฃผ๋ ์์ง์ด ์๊ณ , ๊ทธ๋ฐ๊ฑฐ ์ํด์ฃผ๋ ์์ง์ด ์์ต๋๋ค
๋ ๊ทธ์ ๋ณ๊ฐ๋ก ๋ ๋๋งํ ๋ ๋ฌถ์ ์ ์๋ ๊ฒ๋ผ๋ฆฌ batching์ ์๋์ผ๋ก ํด์ฃผ๋ ์์ง์ด ์๊ณ , ์๋๊ฒ ์์ต๋๋ค. (์ด๊ฑด dynamic batching์ด๋ผ๊ณ ๋ถ๋ฆ๋๋ค)
์ ๊ฐ ์๋ ์์ง๋ค์ ์์
- ๊ฒ์๋ฉ์ด์ปค : ํ ์ค์ฒํจํน์ ์๋์ผ๋ก ํด์ฃผ๊ณ , ๋ฐฐ์นญ๋ ์๋์ผ๋ก ํด์ค (PROFIT!)
- Cocos2d-x : ํ
์ค์ฒํจํน ๊ทธ๋ฐ๊ฑฐ ์๋ค(๋ง๋์? ์๋๋ฉด ์ ์ ๋ถํ). ๋ค์ด๋๋ฏน ๋ฐฐ์นญ ์์ (3.x๋ฒ์ ๋ถํฐ ์ง์ํ๋๊ฑธ๋ก)
- ์ ๋ํฐ : ์ ๋ํฐ๋ ํ๋ค ๋ง์์ ์ ๋ชจ๋ฅด๊ฒ ๋ค์. SpritePacker๋ผ๊ณ ์๋ ๊ฑด ๋ดค๊ตฌ์, ๋ค์ด๋๋ฏน ๋ฐฐ์นญ๋...์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ๋ํฐ ์ ๋๋ผ๋ฉด ์์ง ์์๊น(์์๋๋ถ ํ์ธ์ข)
- love2d : ๋๋ค ์๋ค (ใ ใ )
์์ง์ ํ ์ค์ฒํจํน ๊ธฐ๋ฅ์ ์์ผ๋ฉด ๊ทธ๋ฅ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง
๋ณดํต์ ์๋ ๋ฐฐ์นญ์ ์ง์์ํด๋ ์๋ ๋ฐฐ์นญ์ ํํ๋ก ๊ฐ๋ฅ์ ํ๋๋ก ๋ง๋ค์ด์ ธ์์ต๋๋ค.
์ฝ์ฝ์ค๋ ์์ ์ CCSpriteBatchNodeย ๋ผ๊ณ ์์๊ณ love2d์๋ SpriteBatch๋ผ๊ณ ์๋์ผ๋ก ํ ์ ์๊ฒ ๋ผ์์ต๋๋ค.
์๋์ผ๋ก ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฏธ๋ฆฌ ํ
์ค์ฒ์ํ๋ผ์ค๋ฅผ ์ ๊ตฌ์ฑํ๋ค, ์ฝ๋ฉํ ๋ ๊ฐ์ ํ
์ค์ฒ์ํ๋ผ์ค๋ฅผ ์ฐ๋ ๊ฒ๋ผ๋ฆฌ ์ ์ ํ ๋ฌถ์ด์ ๋๋ก์ฐ ํ์๋ฉด ๋ฉ๋๋ค.
์๋๋ฉด ์ ๋นํ ์งฑ๊ตฌ๋ฅผ ๊ตด๋ ค์ ๋ค์ด๋๋ฏน ๋ฐฐ์นญ์ ๊ตฌํํด๋ ๋๊ณ ์..
๋ฌผ๋ฐ ๊ฑ ์์ง์์ ๋ค ํด์ฃผ๋๊ฒ ์งฑ์ด์ฃ ..
๊ฒฐ๋ก : ๊ฐ์ฒด๋ฅผ ๋ง์ด ๊ทธ๋ ธ๋๋ FPS๊ฐ ์๋์จ๋ค๋ฉด batch rendering์ ํ์~
๋
ใ ใ ๋๋จํจ. ๋ญ์ง๋ ๋ชจ๋ฅด๋ฉด์ ๋ง ์ผ๋๋ฐ ์ด์ ์ดํดํจ. ์ ๋ํฐ๋ ๋ฐฐ์นญ์ด ์๋ค. ์คํํฑ ๋ฉ์ฌ ๋ฐฐ์นญ์ด๋ ๋ค์ด๋๋ฏน ๋ฐฐ์นญ์ ๊ฐ์ ํ ์ค์ณ๋ฅผ ์ฌ์ฉํ๋ 300๊ฐ ์ดํ ๋ฒํ ์ค์ ํด๋ฆฌ๊ณค์ ํ ๋๋ก์ฐ์ฝ์ ์ฐ๊ฑฐ๋ ํ๋ ๊ฑฐ ์์. 2d๋ 300๊ฐ ์ดํ๋ ๊ฐ์ ๋ฉํฐ๋ฆฌ์ผ์ ๊ฐ์ ๋ ์ด์ด์ค๋๋ฉด ํ๋ฒ์ ์ฐ์. ๋ง๋?
๋๋์ ์ตํ๊ฒ์ผ.,..,.,..................
๋ ๊ฐ์ถ์ผ
์คํธํ ์กฐ์์
ใ ใ ใ