surface_getpixel_ext 함수 설명
surface_getpixel_ext
함수는 생성된 서피스의 특정 픽셀의 32비트 ABGR 값을 가져오는 기능을 제공합니다. 이 함수는 서피스가 부동 소수점 형식을 사용할 경우, surface_getpixel()
과 유사하게 배열을 반환합니다. 그러나 이 함수는 RGB 값뿐만 아니라 RGBA의 4개 요소를 포함한 배열을 반환합니다. 성능에 큰 영향을 미치므로 꼭 필요한 경우에만 사용해야 합니다.
문법
surface_getpixel_ext(surface_id, x, y);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
surface_id | Surface | 사용할 서피스 |
x | Real | 확인할 픽셀의 x 좌표 |
y | Real | 확인할 픽셀의 y 좌표 |
반환값
- Real 또는 Array
예제
아래 코드는 마우스 위치에서 32비트 색상 값을 가져오고, 이를 구성 요소 값으로 분리하여 변수에 저장합니다.
col = surface_getpixel_ext(mouse_x, mouse_y);
alpha = (col >> 24) & 255;
blue = (col >> 16) & 255;
green = (col >> 8) & 255;
red = col & 255;
활용 예제
- 픽셀 색상 변경 특정 픽셀의 색상을 변경하는 예제입니다.
gml var col = surface_getpixel_ext(surface_id, x, y); |(0 << 16)|(255 << 8)| |---|---| surface_setpixel(surface_id, x, y, new_col);
- 서피스에서 특정 색상 찾기 서피스에서 특정 색상을 찾는 예제입니다.
gml for (var i = 0; i < surface_width; i++) { for (var j = 0; j < surface_height; j++) { var col = surface_getpixel_ext(surface_id, i, j); if (col == target_color) { // 특정 색상을 찾았을 때의 처리 } } }
- 서피스의 모든 픽셀 색상 가져오기 서피스의 모든 픽셀 색상을 배열에 저장하는 예제입니다.
gml var colors = []; for (var i = 0; i < surface_width; i++) { for (var j = 0; j < surface_height; j++) { colors[array_length(colors)] = surface_getpixel_ext(surface_id, i, j); } }
- 픽셀의 알파 값 확인 특정 픽셀의 알파 값을 확인하는 예제입니다.
gml var col = surface_getpixel_ext(surface_id, x, y); var alpha = (col >> 24) & 255; if (alpha < 128) { // 픽셀이 투명한 경우의 처리 }
이와 같은 다양한 활용 예제를 통해 surface_getpixel_ext
함수를 효과적으로 사용할 수 있습니다.