buffer_set_surface 함수 설명
buffer_set_surface
함수는 버퍼의 정보를 지정된 서피스에 기록하는 기능을 제공합니다. 이 함수는 다음과 같은 조건을 충족해야 정상적으로 작동합니다:
- 버퍼와 서피스는 미리 생성되어 있어야 합니다.
- 버퍼의 크기는 서피스의 크기와 같거나 커야 합니다. 버퍼가 서피스보다 작으면 함수는 조용히 실패합니다.
- 기록할 서피스는 버퍼에 기록된 서피스와 동일한 형식을 가져야 합니다.
서로 다른 플랫폼에서 저장된 서피스를 읽을 때, 동일한 형식을 사용하더라도 올바르게 읽히지 않을 수 있다는 점을 유의해야 합니다.
함수 구문
buffer_set_surface(buffer, surface, offset);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
buffer | Buffer | 사용할 버퍼 |
surface | Surface | 사용할 서피스 |
offset | Real | 데이터 오프셋 값 |
반환 값
- N/A
활용 예제
다음은 buffer_set_surface
함수를 사용하는 예제입니다:
if (!surface_exists(surf1)) {
surf1 = surface_create(200, 200);
surface_set_target(surf1);
draw_clear_alpha(c_white, 0);
surface_reset_target();
if (buffer_exists(buff1)) {
buffer_set_surface(buff1, surf1, 0);
}
}
이 코드는 서피스가 존재하지 않는 경우 서피스를 생성하고, 그 서피스를 지웁니다. 이후 버퍼가 존재하는지 확인하고, 버퍼의 데이터를 서피스로 복사합니다. 이 예제는 새로운 서피스와 버퍼에 저장된 서피스의 형식이 동일하다고 가정합니다.
추가 활용 예제
- 서피스 생성 및 데이터 복사
gml var new_surface = surface_create(300, 300); surface_set_target(new_surface); draw_rectangle(0, 0, 300, 300, c_red, true); surface_reset_target(); buffer_set_surface(my_buffer, new_surface, 0);
- 버퍼에서 서피스 데이터 읽기
gml if (buffer_exists(my_buffer)) { var read_surface = surface_create(300, 300); buffer_set_surface(my_buffer, read_surface, 0); // 이후 read_surface를 사용하여 작업 수행 }
- 서피스의 크기 변경 후 데이터 복사
gml if (surface_exists(old_surface)) { var resized_surface = surface_create(400, 400); surface_set_target(resized_surface); draw_surface(old_surface, 0, 0); surface_reset_target(); buffer_set_surface(my_buffer, resized_surface, 0); }
이러한 예제들은 buffer_set_surface
함수를 활용하여 다양한 방식으로 서피스를 생성하고 데이터를 처리하는 방법을 보여줍니다.