GPU 깊이 쓰기 활성화/비활성화 함수
gpu_set_zwriteenable
함수는 z-버퍼를 사용하여 깊이 순서를 켜거나 끌 수 있는 기능을 제공합니다. 이 함수는 GameMaker에서 인스턴스가 렌더링될 때 생성된 픽셀의 깊이(z 좌표)를 z-버퍼에 저장하고, 같은 픽셀에 다른 인스턴스가 렌더링될 경우 두 깊이를 비교하여 관찰자와 더 가까운 깊이를 z-버퍼에 저장합니다.
하지만 항상 이러한 방식이 원하는 결과는 아닐 수 있습니다. 어떤 경우에는 z 값에 관계없이 모든 것 위에 그려지기를 원할 수 있습니다. 이럴 때는 z-버퍼에 쓰기를 끄는 이 함수를 사용하여 그려지는 모든 것이 다른 것 위에 그려지도록 강제할 수 있습니다.
기본 정보
항목 | 설명 |
---|---|
기본값 | z-쓰기 활성화 (true) |
문법 | gpu_set_zwriteenable(enable); |
인수 | enable (Boolean) - 사용될 비교 모드 |
예제
gpu_set_zwriteenable(false);
with (obj_menu_containers) {
draw_self();
}
gpu_set_zwriteenable(true);
위의 코드는 z-버퍼 쓰기를 끄고 여러 개의 객체를 그린 다음, 다시 z-버퍼 쓰기를 활성화하여 계속해서 그리도록 합니다.
활용 예제
- UI 요소 그리기
UI 요소를 항상 화면의 최상단에 그리기 위해 z-버퍼 쓰기를 비활성화할 수 있습니다.gml gpu_set_zwriteenable(false); draw_ui_elements(); gpu_set_zwriteenable(true);
- 특정 효과 적용
특정 효과(예: 빛 효과)를 다른 객체 위에 항상 그리기 위해 사용할 수 있습니다.gml gpu_set_zwriteenable(false); draw_light_effect(); gpu_set_zwriteenable(true);
- 게임 오버 화면 표시
게임 오버 화면을 항상 최상단에 표시하기 위해 z-버퍼 쓰기를 비활성화합니다.gml gpu_set_zwriteenable(false); draw_game_over_screen(); gpu_set_zwriteenable(true);
- 전투 애니메이션
전투 애니메이션을 다른 모든 요소 위에 그리기 위해 z-버퍼 쓰기를 비활성화합니다.gml gpu_set_zwriteenable(false); draw_battle_animation(); gpu_set_zwriteenable(true);
- 배경 요소 그리기
배경 요소를 항상 화면의 뒤쪽에 그리기 위해 z-버퍼 쓰기를 비활성화할 수 있습니다.gml gpu_set_zwriteenable(false); draw_background_elements(); gpu_set_zwriteenable(true);
이와 같이 gpu_set_zwriteenable
함수를 활용하여 다양한 그래픽 효과를 구현할 수 있습니다.