vertex_update_buffer_from_buffer 함수 설명

vertex_update_buffer_from_buffer 함수는 주어진 버퍼의 데이터를 사용하여 정점 버퍼의 내용을 업데이트합니다. 이 함수는 고정된(frozen) 정점 버퍼를 대상으로 사용할 수 없습니다.

사용 주의 사항

  • 소스 버퍼의 데이터는 대상 정점 버퍼의 정점 형식과 동일하게 포맷되어야 합니다. 그렇지 않으면 예기치 않은 결과가 발생할 수 있습니다.
  • vertex_format_get_info 함수를 사용하여 속성의 크기와 오프셋을 가져올 수 있습니다.
  • 정점 버퍼의 현재 크기 외부에 데이터를 작성하면 필요에 따라 정점 버퍼의 크기가 조정됩니다.

문법

vertex_update_buffer_from_buffer(dest_vbuff, dest_offset, src_buffer[, src_offset, src_size]);

인수 설명

인수 이름 타입 설명
dest_vbuff Vertex Buffer ID 데이터를 복사할 정점 버퍼
dest_offset Real 데이터를 쓰기 시작할 대상 버퍼의 오프셋
src_buffer Buffer ID 복사할 소스 버퍼
src_offset Real 복사 시작할 소스 버퍼의 바이트 오프셋 (기본값: 0)
src_size Real 소스 버퍼에서 복사할 데이터의 크기 (기본값: -1)
  • src_size가 -1일 경우 전체 버퍼가 복사됩니다.

예제 코드

다음은 vertex_update_buffer_from_buffer 함수를 사용하는 예제입니다.

vertex_format_begin();
vertex_format_add_position_3d();     // 3개의 buffer_f32 값
vertex_format_add_texcoord();          // 2개의 buffer_f32 값
vertex_format = vertex_format_end();

var _i = 0, 
    _vertex_size = (3 + 2) * buffer_sizeof(buffer_f32), 
    _buff = buffer_create(1000, buffer_fixed, 4);

repeat(51) {
    repeat(3) buffer_write(_buff, buffer_f32, random(500)); // x, y, z
    repeat(2) buffer_write(_buff, buffer_f32, ((_i++ mod 6) < 3)); // u, v
}

vb = vertex_create_buffer_from_buffer_ext(_buff, vertex_format, 0, 30);
vertex_update_buffer_from_buffer(vb, 0, _buff, 40 * _vertex_size, 3 * _vertex_size);

위 코드는 3D 위치 속성과 텍스처 좌표 속성으로 구성된 새로운 정점 형식을 생성합니다. 그런 다음 몇 가지 임시 변수를 초기화합니다: 루프 카운터, 소스 버퍼 및 단일 정점의 바이트 크기. (3 + 2)는 위치를 저장하는 데 사용되는 세 개의 float 값과 UV 좌표를 저장하는 데 사용되는 두 개의 float 값을 나타냅니다. 버퍼는 무작위 값으로 채워져 총 51개의 무작위 위치 정점(또는 17개의 삼각형)을 생성합니다. 그 후, 버퍼의 처음 30개의 정점으로부터 새로운 정점 버퍼가 생성됩니다. 마지막으로, 이 정점 버퍼의 처음 세 정점이 원래 버퍼의 정점 인덱스 40, 41 및 42의 데이터로 업데이트됩니다.

활용 예제

  1. 정점 버퍼 초기화 및 업데이트 gml var vertex_buffer = vertex_create_buffer(); vertex_update_buffer_from_buffer(vertex_buffer, 0, source_buffer);
  2. 정점 데이터 복사 gml vertex_update_buffer_from_buffer(target_buffer, target_offset, source_buffer, source_offset, source_size);
  3. 정점 형식 변경 후 데이터 업데이트 gml vertex_format = vertex_format_end(); vertex_update_buffer_from_buffer(vertex_buffer, 0, new_source_buffer);
  4. 정점 버퍼 크기 조정 gml vertex_update_buffer_from_buffer(vertex_buffer, 0, source_buffer, 0, -1);

이와 같은 방식으로 vertex_update_buffer_from_buffer 함수를 활용하여 다양한 정점 버퍼 작업을 수행할 수 있습니다.

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA