드로우콜에 대해서 설명하고, 최적화하는 방식에 대해 알고 있는 것이 있으면 설명하세요.
드로우콜
- CPU가 렌더링할 오브젝트에 대해 GPU에 내리는 명령
- 오브젝트가 많아져 드로우콜이 많아지면 CPU에서 GPU로 전달할 때 병목현상이 발생할 수 있음
- 이는 CPU에서 GPU로 작업을 넘겨줄 때 GPU에서 실행하고 있는 작업을 방해하지 않기 위해 버퍼에 명령을 전달하므로, 해당 버퍼가 지나치게 커졌을 때 문제가 발생
최적화 방법
아틀라스 활용
- 여러 오브젝트에서 활용하는 텍스쳐를 하나의 아틀라스로 묶고, 적용시에는 아틀라스의 좌표를 통해 텍스쳐를 구분
- 여러 오브젝트가 하나의 아틀라스를 텍스쳐로 로드하므로, 하나의 오브젝트를 그릴 때마다 여러 텍스처를 로드하지 않아 유리
- 또한 동일한 텍스처를 사용하는 오브젝트를 묶어서 처리하는 Batching을 통해 연속적으로 오브젝트를 렌더하여 성능에 유리
분리된 맵 오브젝트
- 맵이 지나치게 큰 오브젝트로 구성되어 있다면 맵이 조금만 보여도 큰 오브젝트에 대한 드로우콜이 발생
- 따라서 컬링의 이점을 활용하면서 최적화를 효과적으로 적용하기 위해서는 적당히 분리된 맵 오브젝트로 구성해 보이지 않는 오브젝트에 대해서는 드로우콜이 발생하지 않도록 해야함