GPU 백면 제거 모드 설정
gpu_set_cullmode
함수는 백면 제거 모드를 설정하는 데 사용됩니다. 다각형(프리미티브)은 앞면과 뒷면을 가지고 있습니다. 앞면은 정점이 반시계 방향으로 정의된 면입니다. 일반적으로 두 면 모두 그려지지만, 피라미드와 같은 닫힌 형태를 만들 경우, 삼각형의 뒷면은 절대 보이지 않기 때문에 처리 능력을 낭비하게 됩니다. 이러한 경우 백면 제거를 활성화하면 약 절반의 드로잉 시간을 절약할 수 있습니다. 하지만 이 경우에는 폴리곤을 올바르게 정의해야 문제를 방지할 수 있습니다.
제거 모드 상수
제거 모드 값으로는 다음 상수 중 하나를 사용해야 합니다 (기본값은 cull_noculling
입니다):
상수 | 설명 |
---|---|
cull_noculling |
제거를 하지 않음 |
cull_clockwise |
시계 방향 삼각형을 제거 |
cull_counterclockwise |
반시계 방향 삼각형을 제거 |
문법
gpu_set_cullmode(cullmode);
인수
인수명 | 타입 | 설명 |
---|---|---|
cullmode |
제거 모드 상수 | 사용할 제거 모드 (위 목록 참조) |
반환값
- N/A
예제
if (gpu_get_cullmode() != cull_clockwise) {
gpu_set_cullmode(cull_clockwise);
}
위 코드는 현재 제거 모드를 가져오고, 만약 cull_clockwise
가 아니라면 해당 상수로 설정합니다.
활용 예제
- 기본 백면 제거 설정
gml gpu_set_cullmode(cull_counterclockwise);
- 조건부 백면 제거
gml if (some_condition) { gpu_set_cullmode(cull_clockwise); } else { gpu_set_cullmode(cull_noculling); }
- 게임 오브젝트의 백면 제거
gml if (instance_exists(my_object)) { gpu_set_cullmode(cull_counterclockwise); }
- 렌더링 성능 최적화
gml gpu_set_cullmode(cull_noculling); // 렌더링 코드 gpu_set_cullmode(cull_clockwise);
- 다양한 모드 테스트
gml var modes = [cull_noculling, cull_clockwise, cull_counterclockwise]; for (var i = 0; i < array_length(modes); i++) { gpu_set_cullmode(modes[i]); // 렌더링 코드 }