Shader 컴파일 확인 함수
이 문서는 shader_is_compiled 함수에 대해 설명합니다. 이 함수는 런타임에서 셰이더가 성공적으로 컴파일되었는지를 확인합니다. 컴파일이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이 함수는 게임 시작 시 사용하여 게임이 실행되는 플랫폼에서 사용되는 모든 셰이더가 성공적으로 컴파일되었는지 확인하는 데 유용합니다. 특히 Windows에서는 일부 컴퓨터가 DX9와 Shader Level 2.0을 사용하고 있을 수 있으므로 주의가 필요합니다.
셰이더가 컴파일되지 않은 상태에서 shader_set()을 호출하면 게임이 충돌할 수 있으므로, 간단한 GLSL ES 셰이더 외의 셰이더를 사용할 때는 항상 확인하는 것이 좋습니다.
문법
shader_is_compiled(shader);
인수
| 인수 | 유형 | 설명 |
|---|---|---|
| shader | 셰이더 | 확인할 셰이더 |
반환값
| 반환값 | 유형 | 설명 |
|---|---|---|
| Boolean | 불리언 | 셰이더가 컴파일되었으면 true, 아니면 false |
예제
global.GFX = false;
if (shader_is_compiled(sh_glass) && shader_is_compiled(sh_warp)) {
global.GFX = true;
}
위 코드는 전역 변수를 false로 설정한 후, 확인하는 두 개의 셰이더가 올바르게 컴파일되었으면 true로 설정합니다.
활용 예제
- 게임 시작 시 셰이더 확인
gml if (!shader_is_compiled(sh_main)) { show_error("메인 셰이더가 컴파일되지 않았습니다!", true); } - 셰이더에 따라 그래픽 설정 조정
gml if (shader_is_compiled(sh_effect)) { shader_set(sh_effect); } else { shader_set(sh_default); } - 셰이더 상태에 따른 게임 로직
gml if (shader_is_compiled(sh_light)) { // 조명 효과 적용 } else { // 기본 조명 사용 } - 여러 셰이더를 동시에 확인
gml var all_compiled = shader_is_compiled(sh_texture) && shader_is_compiled(sh_reflection); if (!all_compiled) { // 오류 처리 } - 셰이더 로딩 후 확인
gml shader_load("shaders/my_shader.glsl"); if (!shader_is_compiled(sh_my_shader)) { // 로딩 실패 처리 }