"매 Three.js 의 GPU-resident geometry container — 매 modern Three 의 only geometry class.". BufferGeometry 는 typed-array 기반 attribute (position, normal, uv, index) 의 GPU upload 를 직접 관리하며, 매 Geometry class deprecation (r125) 이후 표준 — instancing/batching/morph 의 backbone.
매 핵심
매 Attribute
Position (Float32Array, itemSize=3): vertex coords.
Normal (Float32Array, itemSize=3).
UV (Float32Array, itemSize=2).
Index (Uint16/Uint32Array): triangle list.
Custom: any vertex attribute (color, tangent, instance data).
매 Update Strategy
Static: upload once, never modify (default).
Dynamic (setUsage(DynamicDrawUsage)): frequent CPU update.
import{mergeGeometries}from"three/addons/utils/BufferGeometryUtils.js";constmerged=mergeGeometries([geoA,geoB,geoC],false);// single draw call instead of three
Bounding Volume Recompute
geo.computeBoundingBox();geo.computeBoundingSphere();// required for frustum culling after vertex moves
매 결정 기준
상황
Approach
Static mesh
StaticDrawUsage (default)
Per-frame deform
DynamicDrawUsage + needsUpdate
Many copies
InstancedBufferGeometry
Many distinct meshes
mergeGeometries or BatchedMesh
Massive points
BufferGeometry + Points + custom shader
기본값: static indexed BufferGeometry; switch to instanced/merged for >100 copies.