====== 튜토리얼 번역 : 진행 중 ======
* {{:language:gamemaker:20121116-surface-tutorial-kor.7z|}}
서피스란
* 그림을 그리기 위한 특별한 공간... 개발자한테는 작업용 메모리 버퍼라는 설명이 나을지도.
* 개념은 단순하나, 활용 방법이 역시 문제.
* 창의성과 기발함이 필요한 듯.
튜토리얼 11 서피스 사용 부분 정리
==== 주의사항 ====
* 서피스는 다 사용하고 나면 삭제 해야 한다.
* 삭제를 위해서 변수에 따로 저장해 둬야 한다.
==== 기본 순서 ====
- 서피스용 오브젝트를 하나 만든다.
- **Create Event**에 인스턴스 변수를 추가한다. 이 변수는 앞으로 서피스를 저장하는 용도 변수로 쓴다.
surf = -1;
- **Room End Event**를 추가한다. 서피스를 삭제하는 코드를 넣는다.
if surface_exists(surf) surface_free(surf);
- **Draw Event**에 서피스를 제어하는 코드를 넣는다. 우선은 서피스가 없기 때문에 만드는 코드를 추가해야 한다. 예시는,
// 이미 서피스가 있으므로 그냥 그린다.
if surface_exists(surf) { draw_surface(surf, 0, 0); }
else {
//-- 서피스가 없으므로 하나 추가, 방크기로 만든다.
surf = surface_create( room_width, room_height );
//-- 서피스 제어하는 코드 시작 --
}
====== 서피스에 사용되는 함수 정리 ======
**surface_exists(<서피스 변수>)**
* <서피스변수> 서피스가 있는지 확인. (-1인지 검사하는 건가?)
**surface_free(<서피스 변수>)**
* 서피스 삭제, 이미지 삭제된 것을 또 삭제하는 것을 피하기 위해서 surface_exists()와 같이 사용
**surface_create( <너비>, <높이> )**
* 리턴값 있다. 새로 만든 서피스는 꼭 변수에 저장해야 한다.
**surface_set_target(<서피스 변수>)**
* 그리기 함수를 사용시, 이 서피스에 그리라는 함수. 사용을 마치면 반드시, surface_reset_target()으로 원래 그리는 대상(실제화면)으로 되돌려야 한다.
**surface_reset_target()**
* 그리는 화면을 원래 대로 돌린다. surface_set_target()와 같이 사용한다.
====== 그리기(드로잉) 함수 정리 ======
draw_clear_alpha( <색상>, <알파값> )
* 서피스에 사용하면 좋은 함수로, <색상>으로 화면을 지운다. <알파값>만큼 반투명하게 칠한다.
====== 블렌드 모드 ======
블랜드 연산 시 참고가 되는 이미지 : 출처는 [[http://gmc.yoyogames.com/index.php?showtopic=512187|게임 메이커 커뮤니티]]
{{:language:gamemaker:blendmodes.png|}}
{{:language:gamemaker:blendmodes2.png|}}
{{:language:gamemaker:blendmodes3.png|}}
{{:language:gamemaker:blendmodes4.png|}}
{{:language:gamemaker:blendmodes5.png|}}