버퍼 복사 함수 설명
buffer_copy_from_vertex_buffer
함수는 하나의 정점 버퍼에 저장된 일부(또는 전체) 정점 데이터를 이전에 생성된 일반 버퍼로 복사하는 기능을 제공합니다. 이 함수를 사용하여 정점 버퍼에서 일반 버퍼로 복사할 때, 두 버퍼는 모두 이전에 생성되어야 합니다. 예를 들어, vertex_create_buffer
와 buffer_create
함수를 사용하여 생성할 수 있습니다.
함수 사용법
정점 데이터를 복사할 범위를 지정할 수 있으며, 시작 정점은 0과 정점 수 - 1 사이의 값이 될 수 있습니다. 그 지점에서 복사할 정점 수를 지정할 수 있습니다. 정점 버퍼에 저장된 총 정점 수를 얻으려면 vertex_get_number
함수를 사용할 수 있습니다. 마지막으로, 정점 데이터를 복사할 버퍼 인덱스와 복사할 위치를 정의하는 데이터 오프셋을 제공합니다.
문법
buffer_copy_from_vertex_buffer(vertex_buffer, start_vertex, num_vertices, dest_buffer, dest_offset);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
vertex_buffer | Vertex Buffer | 복사할 정점 버퍼 |
start_vertex | Real | 시작 정점 |
num_vertices | Real | 복사할 총 정점 수 |
dest_buffer | Buffer | 복사할 대상 버퍼 |
dest_offset | Real | 데이터 복사 위치 (바이트 단위) |
반환값
N/A
예제 코드
다음은 정점 버퍼에서 데이터를 복사하는 예제입니다.
var _v_num = vertex_get_number(model_buffer);
buffer_copy_from_vertex_buffer(model_buffer, 0, _v_num - 1, player_buffer, 0);
위 코드는 model_buffer
변수에 저장된 정점 버퍼의 정점 데이터를 복사하여 player_buffer
변수에 저장된 버퍼에 붙여넣습니다.
활용 예제
- 정점 데이터 업데이트
gml var _v_num = vertex_get_number(source_buffer); buffer_copy_from_vertex_buffer(source_buffer, 0, _v_num, target_buffer, 0);
- 부분 정점 복사
gml var _start_vertex = 5; var _num_vertices = 10; buffer_copy_from_vertex_buffer(source_buffer, _start_vertex, _num_vertices, target_buffer, 0);
- 다양한 버퍼 간 복사
gml buffer_copy_from_vertex_buffer(vertex_buffer_1, 0, 50, vertex_buffer_2, 0);
- 정점 수에 따른 동적 복사
gml var _v_count = vertex_get_number(dynamic_buffer); buffer_copy_from_vertex_buffer(dynamic_buffer, 0, _v_count, another_buffer, 0);
- 복사 후 데이터 처리
gml buffer_copy_from_vertex_buffer(source_buffer, 0, vertex_get_number(source_buffer), destination_buffer, 0); // 이후 destination_buffer에서 데이터 처리