surface_set_target_ext 함수 설명
surface_set_target_ext
함수는 셰이더 기능과 함께 사용되며, 네이티브 레벨 셰이더(OpenGL ES, OpenGL, DX9, DX11)에서 MRT(Multiple Render Targets)를 설정하는 데 사용됩니다. HTML5에서는 MRT가 지원되지 않습니다.
문법
surface_set_target_ext(index, surface_id);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
index | Real | 사용할 렌더 타겟 인덱스 (0에서 3까지) |
surface_id | Surface | 사용할 서피스 |
반환 값
- Boolean: 렌더 타겟이 성공적으로 설정되었는지 여부
예제
surface_set_target_ext(0, surf);
위 코드는 렌더 타겟 0을 변수 surf
에 저장된 서피스로 설정합니다.
활용 예제
예제 1: 여러 서피스를 사용한 렌더링
// 서피스 생성
var surf1 = surface_create(800, 600);
var surf2 = surface_create(800, 600);
// 서피스 1을 렌더 타겟으로 설정
surface_set_target_ext(0, surf1);
// 렌더링 코드 작성
draw_clear(c_black);
draw_text(100, 100, "서피스 1에 렌더링 중");
// 서피스 2를 렌더 타겟으로 설정
surface_set_target_ext(1, surf2);
// 렌더링 코드 작성
draw_clear(c_white);
draw_text(100, 100, "서피스 2에 렌더링 중");
// 기본 서피스로 되돌리기
surface_reset_target();
예제 2: 렌더 타겟을 사용한 후 처리
// 서피스 생성
var surf = surface_create(800, 600);
// 서피스를 렌더 타겟으로 설정
surface_set_target_ext(0, surf);
// 렌더링 코드 작성
draw_clear(c_blue);
draw_text(50, 50, "렌더 타겟에 텍스트");
// 렌더 타겟을 기본으로 되돌리기
surface_reset_target();
// 서피스를 화면에 그리기
draw_surface(surf, 0, 0);
예제 3: 여러 렌더 타겟을 활용한 효과
// 서피스 생성
var surf1 = surface_create(800, 600);
var surf2 = surface_create(800, 600);
// 서피스 1을 렌더 타겟으로 설정
surface_set_target_ext(0, surf1);
// 렌더링 코드 작성
draw_clear(c_red);
draw_circle(400, 300, 100, false);
// 서피스 2를 렌더 타겟으로 설정
surface_set_target_ext(1, surf2);
// 렌더링 코드 작성
draw_clear(c_green);
draw_rectangle(200, 150, 600, 450, false);
// 기본 서피스로 되돌리기
surface_reset_target();
// 서피스를 화면에 그리기
draw_surface(surf1, 0, 0);
draw_surface(surf2, 0, 0);
이와 같은 방식으로 surface_set_target_ext
함수를 활용하여 다양한 렌더링 효과를 구현할 수 있습니다.