import { GeometryData } from './geometry'; import { ShaderProgram3D } from '../shader/programs'; export interface InstanceData { positions: Float32Array; scales: Float32Array; colors: Float32Array; } export interface InstancedMeshOptions { geometry: GeometryData; maxInstances?: number; } export declare class InstancedMesh { private gl; private vao; private positionBuffer; private indexBuffer; private instancePosBuffer; private instanceScaleBuffer; private instanceColorBuffer; private geometry; private maxInstances; private instanceCount; constructor(gl: WebGL2RenderingContext, options: InstancedMeshOptions); private initBuffers; /** * Update instance data. Call before render. */ updateInstances(data: InstanceData): void; /** * Render all instances with given shader program. */ render(program: ShaderProgram3D): void; /** * Get current instance count. */ getInstanceCount(): number; /** * Clean up WebGL resources. */ destroy(): void; }