view_set_surface_id 설명서
view_set_surface_id
함수는 뷰 포트의 내용을 서피스에 그릴 수 있도록 설정하는 데 사용됩니다. 서피스를 사용할 때는 화면의 전체 가시 영역을 서피스에 캡처해야 하는 경우가 많으며, 이 함수를 사용하여 뷰 포트에 할당합니다. 이는 선택한 뷰 포트에 표시되는 모든 것이 이제 할당된 서피스에 그려지며, 해당 뷰 포트의 내용은 더 이상 표시되지 않음을 의미합니다. 따라서 다음 중 하나를 수행해야 합니다:
- 새로운 뷰를 활성화하고 해당 뷰에서만 서피스를 그립니다. (현재 어떤 뷰가 그려지고 있는지 확인하기 위해
view_current
를 사용할 수 있습니다.) - 인스턴스의 Draw GUI 또는 Post Draw 이벤트에서 서피스를 그립니다. 이 이벤트는 뷰와 독립적입니다.
이 함수를 사용할 때는 뷰 포트 인덱스(0에서 7까지)와 서피스 인덱스(애플리케이션 서피스 또는 surface_create()
함수가 반환하는 핸들)를 지정합니다. 만약 이전에 서피스가 할당되었고 이를 제거하고 싶다면 -1 값을 사용할 수 있습니다.
문법
view_set_surface_id(view_port, surf)
인수 설명
인수 | 타입 | 설명 |
---|---|---|
view_port | Real | 타겟 뷰 포트 (0 - 7) |
surf | Surface | 뷰에 적용할 서피스 |
반환값
- Real
예제
if (view_get_surface_id(0) == -1) {
view_set_surface_id(0, global.vSurf);
}
위 코드는 뷰 포트 [0]에 서피스가 할당되어 있는지 확인하고, 할당되지 않았다면 하나를 할당합니다.
활용 예제
예제 1: 서피스를 사용한 게임 배경 그리기
// 서피스를 생성하고 뷰 포트에 할당
var bg_surface = surface_create(room_width, room_height);
view_set_surface_id(0, bg_surface);
// 서피스에 배경 그리기
surface_set_target(bg_surface);
draw_background(bg);
surface_reset_target();
예제 2: 서피스를 사용한 UI 요소 그리기
// UI 서피스 생성
var ui_surface = surface_create(room_width, room_height);
view_set_surface_id(1, ui_surface);
// UI 요소 그리기
surface_set_target(ui_surface);
draw_ui_elements();
surface_reset_target();
예제 3: 서피스를 사용한 효과 적용
// 효과 서피스 생성
var effect_surface = surface_create(room_width, room_height);
view_set_surface_id(2, effect_surface);
// 효과 그리기
surface_set_target(effect_surface);
draw_effects();
surface_reset_target();
이와 같이 view_set_surface_id
함수를 활용하여 다양한 그래픽 효과와 UI 요소를 서피스에 그릴 수 있습니다.