Today I Learn

25/02/07 | TIL 드로우콜이란? const란?

오늘도즐겨 2025. 2. 8. 03:52

💡 드로우콜이란?

드로우 콜은 CPU가 GPU에 오브젝트를 랜더링 하도록 요청하는 작업

드로우 콜이 많아질수록 성능이 저하됩니다.


✅ 드로우콜 최적화 방법

  1. 배치(Draw Call Batching) 사용
    • 동일한 머티리얼을 사용하는 오브젝트를 묶어서 한 번에 렌더링
    • Unity의 경우 Static Batching, Dynamic Batching 등의 기능 지원
  2. GPU 인스턴싱(GPU Instancing)
    • 동일한 오브젝트를 여러 개 렌더링할 때 한 번의 드로우콜로 처리
  3. 오브젝트 병합(Mesh Combining)
    • 여러 개의 작은 메시를 하나의 큰 메시로 합쳐서 드로우콜을 줄임
  4. Occlusion Culling (오클루전 컬링)
    • 보이지 않는 오브젝트는 아예 그리지 않도록 최적화
  5. 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를 활용하면 코드의 가독성과 유지보수가 향상됩니다! 🚀