๋ Œ๋”๋ง์„ฑ๋Šฅ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์žก์•„๋จน๋Š”๊ฒƒ์€ Draw Call ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์ดˆ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด Draw Call์€ ๋ง๊ทธ๋Œ€๋กœ ํ•˜๋‚˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” Draw ๊ณผ์ •์˜ ํ˜ธ์ถœ ํšŸ์ˆ˜ ์ž…๋‹ˆ๋‹ค.




Draw Call Batching์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ C๋กœ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด

const char* str = "Hello World!";


// 1๋ฒˆ

for(ย  int i = 0 ; ย str[i]; i++ )
{

ย  ย  printf("%c", str[i];

}


// 2๋ฒˆ

printf("%s", str);


์ด์ •๋„์˜ ์ฐจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฐฐ์นญ์€ ๊ฐ™์€ ๋จธํ„ฐ๋ฆฌ์–ผ์„ ๊ณต์œ ํ•˜๋Š” ๋ Œ๋”๋Ÿฌ๋ผ๋ฆฌ ๋ Œ๋” ๊ณผ์ •์„ ํ•ฉ์ณ ๋“œ๋กœ์šฐ์ฝœ์„ ์ค„์ด๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์œ ๋‹ˆํ‹ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ„๋‹ค๋ฅธ ์„ค์ •์ด ์—†์ด ๋™์  ๋ฐฐ์นญ์„ ์ง€์›ํ•˜์ง€๋งŒ, ์ œ์•ฝ์‚ฌํ•ญ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.ย 
๋งŽ์€ ๊ฒฝ์šฐ (์ง€ํ˜•์ง€๋ฌผ์ฒ˜๋Ÿผ) ์›€์ง์ด์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ๋Š” ์ •์  ๋ฐฐ์นญ์„ ํ†ตํ•ด ๋ Œ๋”๋ง์„ ์ตœ์ ํ™” ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์œ ๋‹ˆํ‹ฐ ๋ฉ”๋‰ด์–ผ์„ ํ™•์ธํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://docs.unity3d.com/kr/current/Manual/DrawCallBatching.html







์ผ๋‹จ ๋“œ๋กœ์šฐ์ฝœ ์ ์šฉ์ „ ์‚ฌ์ง„ ์ž…๋‹ˆ๋‹ค.

๋Œ€๋žต 280~ 300 ์‚ฌ์ด์˜ fps์™€ย 

๋“œ๋กœ์šฐ์ฝœ์ด 3761๋ฒˆ ์ผ์–ด๋‚˜๋Š”๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ ์šฉ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฐฐ์นญํ•˜๊ธธ ์›ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ธ์ŠคํŽ™ํ„ฐ์—์„œ Batching Static์— ์ฒดํฌ๋งŒ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

(๋‹น์—ฐํžˆ ํ•˜์œ„ ์˜ค๋ธŒ์ ํŠธ๊นŒ์ง€ ํฌํ•จ์ด๋ฉฐ, Mesh Renderer๋“ฑ ๋ Œ๋”๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ ๋‹น์—ฐํžˆ Batcing์€ย ์˜๋ฏธ ์—†์Šต๋‹ˆ๋‹ค.)






์ ์šฉ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์‹œ๋ฉด ํ”„๋ ˆ์ž„์ด ๊ฝค๋‚˜ ์˜ฌ๋ผ๊ฐ„๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 100ํ”„๋ ˆ์ž„ ๊ฐ€๊นŒ์ด ์˜ฌ๋ž๋„ค์š”.

๋“œ๋กœ์šฐ์ฝœ๋„ 173์œผ๋กœ ๊ธฐ์กด๋ณด๋‹ค ํ˜„์ €ํžˆ ์ค„์–ด๋“ ๊ฒƒ์„ ์•Œ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ •์  ๋ฐฐ์นญ์„ ํ•˜๊ฒŒ๋˜๋ฉด, ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋Š” ๋Ÿฐํƒ€์ž„์ค‘ ์ด๋™์—ฐ์‚ฐ, ํšŒ์ „์—ฐ์‚ฐ, ์Šค์ผ€์ผ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ทธ์  ์œ ์˜ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.