export interface IWindData { uMin: number; uMax: number; vMin: number; vMax: number; image: HTMLImageElement; } export interface IWind { width: number; height: number; fadeOpacity: number; speedFactor: number; dropRate: number; dropRateBump: number; setWind: (windData: IWindData) => void; draw: () => { d: Uint8Array; w: number; h: number; }; updateParticelNum: (num: number) => void; updateWindDir: (uMin: number, uMax: number, vMin: number, vMax: number) => void; updateColorRampTexture: (rampColors: { [key: number]: string; }) => void; reSize: (width: number, height: number) => void; destroy: () => void; } export interface IWindProps { glContext: WebGLRenderingContext; imageWidth: number; imageHeight: number; fadeOpacity: number; speedFactor: number; dropRate: number; dropRateBump: number; rampColors: { [key: number]: string; }; } export declare class Wind { width: number; height: number; pixels: Uint8Array; fadeOpacity: number; speedFactor: number; dropRate: number; dropRateBump: number; private gl; private drawProgram; private fullScreenProgram; private updateProgram; private rampColors; private numParticles; private numParticlesSize; private particleStateResolution; private quadBuffer; private particleIndexBuffer; private framebuffer; private colorRampTexture; private backgroundTexture; private screenTexture; private particleStateTexture0; private particleStateTexture1; private windTexture; private windData; constructor(options: IWindProps); init(): void; setWind(windData: IWindData): void; /** * 更新风场粒子数量 * @param num */ updateParticelNum(num: number): void; /** * 更新风场风向风速 * @param uMin * @param uMax * @param vMin * @param vMax */ updateWindDir(uMin: number, uMax: number, vMin: number, vMax: number): void; /** * update rampColors * @param rampColors */ updateColorRampTexture(rampColors: { [key: number]: string; }): void; isColorChanged(rampColors: { [key: number]: string; }): boolean; reSize(width: number, height: number): void; draw(): { d: Uint8Array; w: number; h: number; }; drawScreen(): void; drawFullTexture(texture: any, opacity: number): void; drawParticles(): void; updateParticles(): void; destroy(): void; }