[Unity3D] 드로우 콜 (Draw Call)에 관하여
유니티로 프로젝트를 진행하다가 간혹 드로우콜(Draw Call)에 관한 문제를 많이 겪는다. - 특히나 모바일 같은 경우 -
PC기반은 어느정도 사양에 의해 커버가 돼는데 - 그런데도 발생하기도 함.. 극한으로 최적화를 안하거나 드로우콜을 낭비할 경우 - 모바일은 사양이 좋아졌다지만, 아직 한참 부족한 상태다 - PC처럼 최적화없이 낭비할 경우 커버가 안됀다 -
서론은 이쯤 하고, 본론으로 들어가면
일단 드로우 콜(Draw Call)이란 무엇일까?
CPU가 그래픽 API를 호출해서 GPU에게 렌더링을 요청하는 것을 말합니다.
이 작업은 자원이 많이 들기 때문에 드로우 콜을 줄이는 것이 성능 향상에 있어 매우 중요합니다.
스프라이트들을 스프라이트 시트에 모두 모아놓으면 단 한번의 드로우 콜로 모든 스프라이트를 화면에 표시할 수 있습니다. 게임에 사용하는 스프라이트가 많을수록 성능이 획기적으로 향상 됩니다.
(출처 : http://blog.daum.net/yy.kim.0410/278)
드로우 콜이란 화면에서 얼마나 많은 이미지를 뿌려주는 가에 관해 드로우 콜의 수가 늘어난다
유니티에서 많은 이미지를 낭비하게 되면 그만큼 개발프로그램에서 부담이 가는 부분이기 때문에 최적화 및 드로우콜 수의 감소는 선택이 아닌 필수이다.
가장 좋은방법으로는 이미지의 수를 줄이는 것.
애초에 이미지 수를 줄여서 드로우콜을 줄이면 가장 좋지만, 그것이 안되는 경우가 대다수.
그 다음 방법으로는 이미지의 아틀라스화 이다.
이미지 아틀라스화의 장단점은 직접 찾아보면 금방 나옵니다.
간단하게 설명하자면 장점은 드로우콜의 수를 쉽게 줄일 수 있다.
여러 이미지를 압축하는 방식이기 때문이다.
단점 역시 간단하게 말하자면 이미지 관리가 철저해야됀다는것이다.
이미지를 압축해서 사용하는 영역을 침범하면 안되고, 겹픽셀 같은 경우 간혹 발생하는경우도 있고 - NGUI 아틀라스 사용 시 생기는 문제 -
이미지 낭비가 생기는 경우도 없잖아 있다 - 아틀라스는 대게 이미지가 사각형이며 2의 배수이다. 500x500의 4장을 합치면 2000x 2000이 아니라 2048x2048이 되기 때문에 많은 메모리가 필요 이상으로 이용된다.
그밖에 자세한 글은 구글링 외 다른 곳에서 참조하시고, 제 글은 간단하게나마 이렇구나 정도로 읽어주시면 됍니다 ㅎ
p.s.
저는 NGUI를 이용해서 아틀라스화 할 때 생기는 문제들이였고, 이미지패커? 라는 기능이 프로버전에 지원하는 것 같더군요.
틀리거나 지적사항 및 수정사항에 대해서 댓글 부탁드립니다.
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D]Rejected because no crossdomain.xml policy file was found (0) | 2015.12.24 |
---|---|
[Unity3D/FacebookAPI] Unable to verify assembly data; you must provide an authorization key when loading this assembly. (0) | 2015.08.26 |
[Unity3D/iOS] Unity3D에서 iOS기반 사진 캡쳐 및 카메라 엘범 사용 (0) | 2015.08.13 |
[Unity3D] 유니티에서 드래그로 오브젝트 선택하는거 만들기 영상 (0) | 2015.07.06 |
[Unity3D] 유니티 이벤트 함수의 실행 순서 (0) | 2015.07.01 |