💡 드로우콜이란?
드로우 콜은 CPU가 GPU에 오브젝트를 랜더링 하도록 요청하는 작업
드로우 콜이 많아질수록 성능이 저하됩니다.
✅ 드로우콜 최적화 방법
- 배치(Draw Call Batching) 사용
- 동일한 머티리얼을 사용하는 오브젝트를 묶어서 한 번에 렌더링
- Unity의 경우 Static Batching, Dynamic Batching 등의 기능 지원
- GPU 인스턴싱(GPU Instancing)
- 동일한 오브젝트를 여러 개 렌더링할 때 한 번의 드로우콜로 처리
- 오브젝트 병합(Mesh Combining)
- 여러 개의 작은 메시를 하나의 큰 메시로 합쳐서 드로우콜을 줄임
- Occlusion Culling (오클루전 컬링)
- 보이지 않는 오브젝트는 아예 그리지 않도록 최적화
- LOD(Level of Detail) 사용
- 멀리 있는 오브젝트는 저해상도 메시를 사용하여 드로우콜 부담 감소
➡️ 드로우콜은 GPU가 그래픽을 렌더링하는 핵심적인 요청이며,
게임 및 3D 애플리케이션에서 퍼포먼스를 최적화하기 위해 최대한 줄이는 것이 중요합니다.
➡️ 특히, 드로우콜 최적화는 CPU 부하를 줄이고 FPS를 높이는 핵심 요소 이므로,
적절한 배칭, 인스턴싱, 메시 병합 등의 기법을 활용하는 것이 좋습니다.
✅ 최적화 기법에 대한 활용도
💡const 란?
const는 "상수(Constant)" 를 의미하며, 한 번 값이 설정되면 변경할 수 없는 변수를 선언할 때 사용됩니다.
const 특징
1. 컴파일 타임 상수
- const 변수는 컴파일 시점에 값이 결정됩니다.
- 따라서 const로 선언된 변수는 실행 중에 변경할 수 없습니다.
2. 메모리 절약
- const 변수는 값 자체가 코드에 직접 삽입되므로 메모리를 절약할 수 있습니다.
- 하지만, 여러 곳에서 사용될 경우 재컴파일이 필요할 수 있습니다.
3. 반드시 초기화 필요
- const 변수는 선언 시 반드시 값을 할당해야 합니다.
- 예를 들어, 아래 코드는 오류를 발생시킵니다.
const int MY_VALUE; // ❌ 오류: 반드시 초기화 필요!
4. 객체에 대해 사용 불가 (참조형 사용 불가)
- const는 int, float, double, bool, char, string 등 기본형(primitive type) 에만 사용할 수 있습니다.
- List<int>, Dictionary<string, int> 같은 객체형 참조 타입은 const로 선언할 수 없습니다.
const List<int> myList = new List<int>(); // ❌ 오류 발생!
✅ const vs readonly 차이점
const를 언제 사용해야 할까?
✅ 사용해야 할 때:
- 변하지 않는 값을 정의할 때 (PI, MAX_SCORE, GRAVITY 등)
- 문자열이나 숫자 같은 기본형(primitive type) 값을 저장할 때
- 여러 곳에서 사용될 변하지 않는 설정 값을 저장할 때
❌ 사용하면 안 되는 경우:
- 객체형 데이터(List, Dictionary 등) → readonly 사용
- 런타임에 변경될 가능성이 있는 값 → readonly 또는 일반 변수 사용
결론
- const는 컴파일 타임 상수이며, 한 번 할당되면 변경할 수 없습니다.
- readonly는 런타임에 값을 설정할 수 있으며, 객체에도 사용 가능합니다.
- 불변 값이 필요할 때 const를 활용하면 코드의 가독성과 유지보수가 향상됩니다! 🚀
'Today I Learn' 카테고리의 다른 글
25/02/18 | TIL 통신에 대하여 (0) | 2025.02.18 |
---|---|
25/02/11 | TIL 에셋번들과 어드레서블 활용 (0) | 2025.02.11 |
25/02/10 | TIL 에셋번들과 어드레서블 (0) | 2025.02.10 |
25/02/04 | TIL 알고리즘 2 (0) | 2025.02.05 |
25/02/03 | TIL 알고리즘 1 (0) | 2025.02.04 |