Skip to main content

GPUGeometry

GPUGeometry is the GPU-backed counterpart to Geometry. It stores already-created luma.gl Buffer objects plus the corresponding bufferLayout metadata.

Use it when geometry data is already on the GPU and should not be re-uploaded from typed arrays. When CPU Geometry is converted through makeGPUGeometry(), it is first interleaved so the upload uses one vertex buffer plus an optional index buffer.

Usage​

import {GPUGeometry} from '@luma.gl/engine';

const gpuGeometry = new GPUGeometry({
topology: 'triangle-list',
vertexCount: 3,
bufferLayout: [{name: 'positions', format: 'float32x3'}],
attributes: {
positions: positionBuffer
}
});

Types​

GPUGeometryProps​

export type GPUGeometryProps = {
id?: string;
topology: 'point-list' | 'line-list' | 'line-strip' | 'triangle-list' | 'triangle-strip';
vertexCount: number;
bufferLayout: BufferLayout[];
indices?: Buffer | null;
attributes: Record<string, Buffer>;
};

Properties​

id, topology, vertexCount​

Basic geometry identity and draw metadata.

bufferLayout​

The GPU buffer layout that matches the provided attributes.

indices​

Optional index buffer.

attributes​

Named vertex buffers. Keys match bufferLayout[].name; these are GPU buffer binding names, not necessarily the source keys stored in CPU Geometry.attributes.

userData​

Application-owned metadata.

Methods​

constructor(props: GPUGeometryProps)​

Creates a GPU-backed geometry object. Validates that indices, when present, has Buffer.INDEX usage.

destroy(): void​

Destroys the index buffer and all attribute buffers managed by this object.

getVertexCount(): number​

Returns the vertex count.

getAttributes(): Record<string, Buffer>​

Returns the attribute buffers.

getIndexes(): Buffer | null​

Returns the index buffer when present.

  • makeGPUGeometry(device, geometry) converts a CPU Geometry into GPUGeometry. CPU input is interleaved before upload; GPUGeometry input is returned unchanged.
  • getIndexBufferFromGeometry(device, geometry) extracts or creates an index buffer.
  • getAttributeBuffersFromGeometry(device, geometry) creates one GPU vertex buffer per CPU geometry attribute key and preserves the geometry's bufferLayout.