vertex_freeze 함수 설명 및 활용 예제
개요
vertex_freeze
함수는 버텍스 버퍼를 "고정(freeze)"하는 데 사용됩니다. 고정된 버텍스 버퍼는 VRAM에 저장되며 읽기 전용이 됩니다. 즉, 변경이 필요할 경우 전체 버퍼를 삭제하고 다시 생성해야 합니다. VRAM에 위치하기 때문에 고정된 버텍스 버퍼는 일반적인 동적 버퍼보다 셰이더에 더 빠르게 제출될 수 있습니다. 이 함수는 레벨이나 게임의 지속 시간 동안 변하지 않는 커스텀 프리미티브가 필요한 효과에 추천됩니다.
함수 구문
vertex_freeze(buffer);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
buffer | Vertex Buffer | 고정할 버텍스 버퍼 |
반환 값
반환 값 | 설명 |
---|---|
0 | 성공적으로 고정됨 |
-1 | 실패 |
예제
Create 이벤트에서의 사용
vertex_freeze(vbuff);
위 코드는 Create 이벤트에서 주어진 버텍스 버퍼를 고정하여 다른 이벤트에서 "정적" 버퍼로 더 빠르게 접근할 수 있도록 합니다.
활용 및 응용 예제
1. 게임 레벨에서의 정적 오브젝트
정적 오브젝트의 버텍스 버퍼를 고정하여 렌더링 성능을 향상시킬 수 있습니다.
// Create 이벤트
vbuff = vertex_create_buffer();
vertex_begin(vbuff, pr_trianglelist);
// 정적 오브젝트의 정점 추가
vertex_end(vbuff);
vertex_freeze(vbuff);
2. UI 요소의 최적화
UI 요소의 정적 버텍스 버퍼를 고정하여 매 프레임마다 재생성하지 않도록 할 수 있습니다.
// UI Create 이벤트
ui_vbuff = vertex_create_buffer();
vertex_begin(ui_vbuff, pr_trianglelist);
// UI 요소의 정점 추가
vertex_end(ui_vbuff);
vertex_freeze(ui_vbuff);
3. 파티클 시스템에서의 성능 개선
변하지 않는 파티클의 버텍스 버퍼를 고정하여 성능을 개선할 수 있습니다.
// 파티클 생성 이벤트
particle_vbuff = vertex_create_buffer();
vertex_begin(particle_vbuff, pr_pointlist);
// 파티클의 정점 추가
vertex_end(particle_vbuff);
vertex_freeze(particle_vbuff);
4. 애니메이션 캐릭터의 정적 부분
애니메이션 캐릭터의 정적 부분을 고정하여 렌더링 성능을 높일 수 있습니다.
// 캐릭터 Create 이벤트
char_vbuff = vertex_create_buffer();
vertex_begin(char_vbuff, pr_trianglelist);
// 캐릭터의 정점 추가
vertex_end(char_vbuff);
vertex_freeze(char_vbuff);
이와 같이 vertex_freeze
함수를 활용하여 다양한 상황에서 성능을 최적화할 수 있습니다.