GPU 깊이 설정 함수 (gpu_set_depth)
이 문서는 GameMaker의 2D 드로잉 함수에서 깊이(z 좌표)를 설정하는 gpu_set_depth
함수에 대해 설명합니다. 기본적으로 GameMaker는 평면 그래픽을 그릴 때 레이어의 깊이를 사용하지만, 이 함수를 사용하면 사용자가 원하는 깊이를 설정할 수 있습니다. 이를 통해 다른 깊이에서 그리거나 개별 스프라이트/프리미티브를 각자의 깊이에서 그릴 수 있습니다.
함수 설명
- 함수명:
gpu_set_depth
- 문법:
gpu_set_depth(depth);
- 인자:
depth
: 실수형, 드로잉에 사용할 새로운 깊이 값- 반환값: 없음
사용 예제
예제 1: "depth = -y"
이 예제는 현재 인스턴스의 -y
값을 깊이로 설정하여 다른 인스턴스 뒤에 그리는 방법을 보여줍니다.
var _zwrite = gpu_get_zwriteenable();
var _ztest = gpu_get_ztestenable();
gpu_set_zwriteenable(true);
gpu_set_ztestenable(true);
var _depth = gpu_get_depth();
gpu_set_depth(-y);
draw_self();
gpu_set_depth(_depth);
gpu_set_zwriteenable(_zwrite);
gpu_set_ztestenable(_ztest);
예제 2: 원을 사용한 모래시계 모양 그리기
이 예제는 드로잉 이벤트에서 색상 변화를 주며 모래시계 모양을 그리는 방법을 보여줍니다.
gpu_set_zwriteenable(true);
gpu_set_ztestenable(true);
matrix_set(matrix_view, matrix_build_lookat(220, 0, 90, 0, 0, 90, 0, 0, 1));
matrix_set(matrix_projection, matrix_build_projection_perspective_fov(60, room_width/room_height, 1, 10000));
var _depth = gpu_get_depth(); // 이전 깊이 저장
var _col = draw_get_colour();
var n = 180;
for (var z = 0; z <= n; z += 10) {
gpu_set_depth(z);
draw_set_colour(make_color_hsv(z / n * 255, 150, 250));
draw_circle(0, 0, 40 + lengthdir_x(20, z / n * 360), false);
}
draw_set_colour(_col);
gpu_set_depth(_depth); // 이전 깊이 복원
활용 예제
예제 번호 | 설명 |
---|---|
1 | 여러 개의 스프라이트를 깊이를 다르게 설정하여 겹쳐 그리기 |
2 | 3D 효과를 주기 위해 깊이를 조정하여 입체적인 형태 만들기 |
3 | 게임 내에서 특정 오브젝트가 다른 오브젝트 뒤에 숨도록 깊이 설정하기 |
4 | 깊이를 이용하여 UI 요소를 배치할 때 시각적으로 구분하기 |
5 | 애니메이션 효과를 위해 깊이를 변화시키며 오브젝트 그리기 |
이 문서에서는 gpu_set_depth
함수의 기본적인 사용법과 활용 예제를 설명했습니다. 추가적인 활용 방법은 개발자의 창의력에 따라 다양하게 적용될 수 있습니다.