버퍼 생성 함수 설명
buffer_create_from_vertex_buffer
함수는 이전에 생성된 정점 버퍼의 데이터를 사용하여 게임 내에서 메모리의 일부를 버퍼로 할당하는 기능을 제공합니다. 이 함수는 버퍼에 대한 참조를 반환하며, 이 참조는 변수에 저장되어 이후의 모든 함수 호출에 사용됩니다.
함수 사용법
이 함수는 다음과 같은 인자를 받습니다:
- vertex_buffer: 사용할 정점 버퍼에 대한 참조 (예:
vertex_create_buffer
함수에서 반환된 값). - type: 생성할 버퍼의 타입을 정의하는 상수.
- alignment: 버퍼의 바이트 정렬 값. 이 값은 저장하려는 데이터에 따라 달라지며, 대부분의 경우 1로 설정하는 것이 적합합니다. 그러나 특정 작업에서는 특정 정렬이 필수적이며, 잘못된 정렬은 오류를 발생시킬 수 있습니다.
데이터 타입에 따른 정렬 가이드
데이터 타입 | 정렬 값 |
---|---|
문자열 | 1 바이트 |
8비트 정수 (부호 있음/없음) | 1 바이트 |
16비트 정수 (부호 있음/없음) | 2 바이트 |
32비트 정수 (부호 있음/없음) | 4 바이트 |
16비트 부동 소수점 | 2 바이트 |
32비트 부동 소수점 | 4 바이트 |
64비트 부동 소수점 | 8 바이트 |
정점 버퍼는 1 바이트 정렬이지만, 데이터 처리 방식에 따라 다른 정렬로 버퍼를 생성할 수 있습니다. 생성된 새로운 버퍼는 메모리에서 정점 버퍼를 제거하지 않으며, 더 이상 필요하지 않을 때는 vertex_delete_buffer
함수를 사용해야 합니다.
함수 문법
buffer_create_from_vertex_buffer(vertex_buffer, type, alignment)
인자 설명
인자 | 타입 | 설명 |
---|---|---|
vertex_buffer | Vertex Buffer | 사용할 정점 버퍼에 대한 참조 |
type | Buffer Type Constant | 생성할 버퍼의 타입 (위의 상수 목록 참조) |
alignment | Real | 버퍼의 바이트 정렬 값 |
반환 값
- Buffer: 생성된 버퍼에 대한 참조.
예제
다음 코드는 메모리를 버퍼에 할당하고, 주어진 정점 버퍼의 데이터를 복사한 후, 새로운 버퍼를 반환하여 player_buffer
변수에 저장합니다.
player_buffer = buffer_create_from_vertex_buffer(model_buffer, buffer_grow, 1);
이 코드는 model_buffer
에서 데이터를 복사하여 player_buffer
에 저장합니다. 이후 이 버퍼는 게임 내에서 다양한 용도로 사용될 수 있습니다.
활용 예제
- 게임 오브젝트의 위치 업데이트:
gml buffer_write(player_buffer, buffer_float, player_x); buffer_write(player_buffer, buffer_float, player_y);
- 정점 데이터의 색상 변경:
gml buffer_write(player_buffer, buffer_color, new_color);
- 애니메이션 프레임 데이터 저장:
gml buffer_write(player_buffer, buffer_float, animation_frame);
- 충돌 감지 데이터 저장:
gml buffer_write(player_buffer, buffer_int, collision_id);
- 사운드 효과 데이터 저장:
gml buffer_write(player_buffer, buffer_float, sound_volume);
이와 같은 방식으로 buffer_create_from_vertex_buffer
함수를 활용하여 다양한 데이터 처리 및 저장 작업을 수행할 수 있습니다.