GPU 스캐리핑 함수 설명
gpu_set_scissor
함수는 렌더 타겟 내에서 직사각형 "스캐리핑" 영역을 정의합니다. 이 함수 이후에 그리는 모든 것은 스캐리핑 영역 내에서만 출력되며, 그 외의 부분은 "잘려 나갑니다". 좌표는 정수로 반올림되며, 그리는 표면의 지역에 대해 로컬입니다. 즉, (0, 0)은 그리는 표면의 왼쪽 상단 모서리를 의미합니다. 표면 타겟이나 뷰포트를 변경하면 스캐리핑 영역은 새로운 렌더 타겟의 전체를 덮도록 초기화됩니다.
문법
gpu_set_scissor(x_or_struct, [y, w, h]);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
x_or_struct | Real 또는 Struct | 스캐리핑 영역의 X 위치, 또는 x, y, w, h를 포함하는 구조체 |
y | Real | 스캐리핑 영역의 Y 위치, 첫 번째 인자가 구조체가 아닐 경우 필수 |
w | Real | 스캐리핑 영역의 너비, 첫 번째 인자가 구조체가 아닐 경우 필수 |
h | Real | 스캐리핑 영역의 높이, 첫 번째 인자가 구조체가 아닐 경우 필수 |
반환값
N/A
예제
var _scissor = gpu_get_scissor();
gpu_set_scissor(200, 200, 600, 600);
draw_self();
gpu_set_scissor(_scissor);
위 예제는 현재 스캐리핑 영역을 가져와 로컬 변수에 저장한 후, 스캐리핑 영역을 변경하고 무언가를 그린 다음, gpu_set_scissor()
호출 이전의 스캐리핑 영역으로 재설정합니다.
활용 예제
- 게임 UI 요소 그리기
gpu_set_scissor(50, 50, 300, 200);
draw_sprite(spr_ui_background, 0, 50, 50);
gpu_set_scissor(0, 0, 800, 600); // 전체 영역으로 복원
- 특정 영역에만 효과 적용하기
gpu_set_scissor(100, 100, 400, 300);
draw_surface(surf_effect, 100, 100);
gpu_set_scissor(0, 0, 800, 600); // 전체 영역으로 복원
- 게임 오브젝트의 특정 부분만 그리기
gpu_set_scissor(obj_player.x, obj_player.y, obj_player.width, obj_player.height);
draw_self();
gpu_set_scissor(0, 0, 800, 600); // 전체 영역으로 복원
- 미니맵 그리기
gpu_set_scissor(600, 0, 200, 200);
draw_surface(surf_minimap, 600, 0);
gpu_set_scissor(0, 0, 800, 600); // 전체 영역으로 복원
- 특정 영역에만 텍스트 출력하기
gpu_set_scissor(150, 150, 500, 300);
draw_text(200, 200, "Hello, World!");
gpu_set_scissor(0, 0, 800, 600); // 전체 영역으로 복원